{"version":3,"sources":["webpack:///./node_modules/xe-utils/isNaN.js","webpack:///./node_modules/xe-utils/repeat.js","webpack:///./node_modules/xe-utils/getWhatMonth.js","webpack:///./node_modules/xe-utils/endsWith.js","webpack:///./node_modules/xe-utils/set.js","webpack:///./node_modules/xe-utils/toJSONString.js","webpack:///./node_modules/xe-utils/toInteger.js","webpack:///./node_modules/xe-utils/helperCreateGetObjects.js","webpack:///./node_modules/xe-utils/has.js","webpack:///./node_modules/xe-utils/toFixed.js","webpack:///./node_modules/xe-utils/getYearDay.js","webpack:///./node_modules/xe-utils/pick.js","webpack:///./node_modules/xe-utils/indexOf.js","webpack:///./node_modules/xe-utils/objectEach.js","webpack:///./node_modules/xe-utils/isFloat.js","webpack:///./node_modules/xe-utils/getBaseURL.js","webpack:///./node_modules/xe-utils/findIndexOf.js","webpack:///./node_modules/xe-utils/staticObjectToString.js","webpack:///./node_modules/xe-utils/lastForOf.js","webpack:///./node_modules/xe-utils/objectMap.js","webpack:///./node_modules/xe-utils/max.js","webpack:///./node_modules/xe-utils/chunk.js","webpack:///./node_modules/xe-utils/getDayOfMonth.js","webpack:///./node_modules/xe-utils/uniq.js","webpack:///./node_modules/xe-utils/toTreeArray.js","webpack:///./node_modules/xe-utils/helperCreateToNumber.js","webpack:///./node_modules/xe-utils/camelCase.js","webpack:///./node_modules/xe-utils/padEnd.js","webpack:///./node_modules/xe-utils/mean.js","webpack:///./node_modules/xe-utils/getWhatWeek.js","webpack:///./src/utils/request.js","webpack:///./src/api/campus.js","webpack:///./node_modules/xe-utils/includes.js","webpack:///./node_modules/xe-utils/after.js","webpack:///./node_modules/xe-utils/copyWithin.js","webpack:///./node_modules/xe-utils/startsWith.js","webpack:///./node_modules/xe-utils/before.js","webpack:///./node_modules/xe-utils/arrayEach.js","webpack:///./node_modules/xe-utils/lastEach.js","webpack:///./node_modules/xe-utils/isValidDate.js","webpack:///./node_modules/xe-utils/setupDefaults.js","webpack:///./node_modules/xe-utils/assign.js","webpack:///./node_modules/xe-utils/filter.js","webpack:///./node_modules/xe-utils/getDayOfYear.js","webpack:///./node_modules/xe-utils/helperDefaultCompare.js","webpack:///./node_modules/xe-utils/helperCreateMinMax.js","webpack:///./node_modules/xe-utils/reduce.js","webpack:///./node_modules/xe-utils/isWeakMap.js","webpack:///./node_modules/xe-utils/helperCreateInInObjectString.js","webpack:///./node_modules/xe-utils/commafy.js","webpack:///./node_modules/xe-utils/toNumber.js","webpack:///./node_modules/xe-utils/helperGetLocatOrigin.js","webpack:///./node_modules/xe-utils/getSize.js","webpack:///./node_modules/xe-utils/values.js","webpack:///./node_modules/xe-utils/isNumber.js","webpack:///./node_modules/xe-utils/countBy.js","webpack:///./node_modules/xe-utils/slice.js","webpack:///./node_modules/xe-utils/helperCreatePickOmit.js","webpack:///./node_modules/xe-utils/staticStrUndefined.js","webpack:///./node_modules/xe-utils/getWhatDay.js","webpack:///./node_modules/xe-utils/helperGetDateTime.js","webpack:///./node_modules/xe-utils/helperCreateMathNumber.js","webpack:///./node_modules/xe-utils/helperCreateiterateIndexOf.js","webpack:///./node_modules/xe-utils/helperEqualCompare.js","webpack:///./node_modules/xe-utils/invoke.js","webpack:///./node_modules/xe-utils/toDateString.js","webpack:///./node_modules/xe-utils/toNumberString.js","webpack:///./node_modules/xe-utils/isFinite.js","webpack:///./node_modules/xe-utils/mapTree.js","webpack:///./node_modules/node-libs-browser/mock/process.js","webpack:///./node_modules/xe-utils/isInteger.js","webpack:///./node_modules/xe-utils/helperDeleteProperty.js","webpack:///./node_modules/xe-utils/add.js","webpack:///./node_modules/xe-utils/helperCreateIterateHandle.js","webpack:///./node_modules/xe-utils/includeArrays.js","webpack:///./node_modules/xe-utils/helperNewDate.js","webpack:///./node_modules/xe-utils/isSet.js","webpack:///./node_modules/xe-utils/template.js","webpack:///./node_modules/xe-utils/zip.js","webpack:///./node_modules/xe-utils/throttle.js","webpack:///./node_modules/xe-utils/staticDecodeURIComponent.js","webpack:///./node_modules/xe-utils/helperCreateGetDateWeek.js","webpack:///./node_modules/xe-utils/timestamp.js","webpack:///./node_modules/xe-utils/toArrayTree.js","webpack:///./node_modules/xe-utils/isFormData.js","webpack:///./node_modules/xe-utils/isError.js","webpack:///./node_modules/xe-utils/lastObjectEach.js","webpack:///./node_modules/xe-utils/get.js","webpack:///./node_modules/xe-utils/isBoolean.js","webpack:///./node_modules/xe-utils/isEmpty.js","webpack:///./node_modules/xe-utils/toArray.js","webpack:///./node_modules/xe-utils/unescape.js","webpack:///./node_modules/xe-utils/find.js","webpack:///./node_modules/xe-utils/helperFormatEscaper.js","webpack:///./node_modules/xe-utils/staticWindow.js","webpack:///./node_modules/xe-utils/min.js","webpack:///./node_modules/xe-utils/getYearWeek.js","webpack:///./node_modules/xe-utils/helperNumberDecimal.js","webpack:///./node_modules/xe-utils/getWhatYear.js","webpack:///./node_modules/xe-utils/findTree.js","webpack:///./node_modules/xe-utils/remove.js","webpack:///./node_modules/xe-utils/isPlainObject.js","webpack:///./node_modules/xe-utils/helperGetYMDTime.js","webpack:///./node_modules/xe-utils/once.js","webpack:///./node_modules/xe-utils/helperGetDateMonth.js","webpack:///./node_modules/xe-utils/flatten.js","webpack:///./node_modules/xe-utils/keys.js","webpack:///./node_modules/xe-utils/merge.js","webpack:///./node_modules/xe-utils/orderBy.js","webpack:///./node_modules/xe-utils/locat.js","webpack:///./node_modules/xe-utils/findLast.js","webpack:///./node_modules/xe-utils/isDate.js","webpack:///./node_modules/xe-utils/isMatch.js","webpack:///./node_modules/xe-utils/toStringJSON.js","webpack:///./node_modules/xe-utils/entries.js","webpack:///./node_modules/xe-utils/searchTree.js","webpack:///./node_modules/xe-utils/isWindow.js","webpack:///./node_modules/xe-utils/multiply.js","webpack:///./node_modules/xe-utils/isUndefined.js","webpack:///./node_modules/xe-utils/lastArrayEach.js","webpack:///./node_modules/xe-utils/pluck.js","webpack:///./node_modules/xe-utils/isDocument.js","webpack:///./node_modules/xe-utils/helperNumberDivide.js","webpack:///./node_modules/xe-utils/isElement.js","webpack:///./node_modules/xe-utils/trimRight.js","webpack:///./node_modules/xe-utils/staticEncodeURIComponent.js","webpack:///./node_modules/xe-utils/eachTree.js","webpack:///./node_modules/xe-utils/zipObject.js","webpack:///./node_modules/xe-utils/helperGetYMD.js","webpack:///./node_modules/xe-utils/helperMultiply.js","webpack:///./node_modules/xe-utils/last.js","webpack:///./node_modules/xe-utils/forOf.js","webpack:///./node_modules/xe-utils/staticEscapeMap.js","webpack:///./node_modules/xe-utils/helperStringLowerCase.js","webpack:///./node_modules/xe-utils/eqNull.js","webpack:///./node_modules/xe-utils/arrayLastIndexOf.js","webpack:///./node_modules/xe-utils/helperGetDateFullYear.js","webpack:///./node_modules/xe-utils/subtract.js","webpack:///./node_modules/xe-utils/isEqualWith.js","webpack:///./node_modules/xe-utils/each.js","webpack:///./node_modules/xe-utils/divide.js","webpack:///./node_modules/xe-utils/findLastIndexOf.js","webpack:///./node_modules/xe-utils/helperGetHGSKeys.js","webpack:///./node_modules/xe-utils/hasOwnProp.js","webpack:///./node_modules/xe-utils/padStart.js","webpack:///./node_modules/xe-utils/getMonthWeek.js","webpack:///./node_modules/xe-utils/arrayIndexOf.js","webpack:///./node_modules/xe-utils/isArray.js","webpack:///./node_modules/xe-utils/helperStringSubstring.js","webpack:///./node_modules/xe-utils/floor.js","webpack:///./node_modules/xe-utils/helperCreateIndexOf.js","webpack:///./node_modules/xe-utils/parseUrl.js","webpack:///./node_modules/xe-utils/now.js","webpack:///./node_modules/xe-utils/uniqueId.js","webpack:///./node_modules/xe-utils/isMap.js","webpack:///./node_modules/xe-utils/destructuring.js","webpack:///./node_modules/xe-utils/browse.js","webpack:///./node_modules/xe-utils/isSymbol.js","webpack:///./node_modules/xe-utils/findKey.js","webpack:///./node_modules/xe-utils/lastIndexOf.js","webpack:///./node_modules/xe-utils/shuffle.js","webpack:///./node_modules/xe-utils/isLeapYear.js","webpack:///./node_modules/xe-utils/staticStrFirst.js","webpack:///./node_modules/xe-utils/isFunction.js","webpack:///./node_modules/xe-utils/isWeakSet.js","webpack:///./node_modules/xe-utils/unserialize.js","webpack:///./node_modules/xe-utils/isDateSame.js","webpack:///./node_modules/xe-utils/groupBy.js","webpack:///./node_modules/xe-utils/toFormatString.js","webpack:///./node_modules/xe-utils/isString.js","webpack:///./node_modules/xe-utils/range.js","webpack:///./node_modules/xe-utils/sortBy.js","webpack:///./node_modules/xe-utils/union.js","webpack:///./node_modules/xe-utils/unzip.js","webpack:///./node_modules/xe-utils/sum.js","webpack:///./node_modules/xe-utils/isArguments.js","webpack:///./node_modules/xe-utils/clear.js","webpack:///./node_modules/xe-utils/index.js","webpack:///./node_modules/xe-utils/helperStringRepeat.js","webpack:///./node_modules/xe-utils/bind.js","webpack:///./node_modules/xe-utils/round.js","webpack:///./node_modules/xe-utils/helperCreateInTypeof.js","webpack:///./node_modules/xe-utils/isTypeError.js","webpack:///./node_modules/xe-utils/getWhatQuarter.js","webpack:///./node_modules/xe-utils/staticParseInt.js","webpack:///./node_modules/xe-utils/staticStrLast.js","webpack:///./node_modules/xe-utils/toValueString.js","webpack:///./node_modules/xe-utils/escape.js","webpack:///./node_modules/xe-utils/ctor.js","webpack:///./node_modules/xe-utils/every.js","webpack:///./node_modules/xe-utils/isEqual.js","webpack:///./node_modules/xe-utils/staticLocation.js","webpack:///./node_modules/xe-utils/isObject.js","webpack:///./node_modules/xe-utils/some.js","webpack:///./node_modules/path-browserify/index.js","webpack:///./node_modules/xe-utils/helperStringUpperCase.js","webpack:///./node_modules/xe-utils/staticDayTime.js","webpack:///./node_modules/xe-utils/map.js","webpack:///./node_modules/xe-utils/serialize.js","webpack:///./node_modules/xe-utils/clone.js","webpack:///./node_modules/xe-utils/debounce.js","webpack:///./node_modules/xe-utils/staticDocument.js","webpack:///./node_modules/xe-utils/cookie.js","webpack:///./node_modules/xe-utils/staticHGKeyRE.js","webpack:///./node_modules/xe-utils/helperGetUTCDateTime.js","webpack:///./node_modules/xe-utils/helperCreateTreeFunc.js","webpack:///./node_modules/xe-utils/helperNumberOffsetPoint.js","webpack:///./node_modules/xe-utils/isRegExp.js","webpack:///./node_modules/xe-utils/isNull.js","webpack:///./node_modules/xe-utils/trimLeft.js","webpack:///./node_modules/xe-utils/getDateDiff.js","webpack:///./node_modules/xe-utils/trim.js","webpack:///./node_modules/xe-utils/property.js","webpack:///./node_modules/xe-utils/omit.js","webpack:///./node_modules/xe-utils/filterTree.js","webpack:///./node_modules/xe-utils/sample.js","webpack:///./node_modules/xe-utils/kebabCase.js","webpack:///./node_modules/xe-utils/first.js","webpack:///./node_modules/xe-utils/random.js","webpack:///./node_modules/xe-utils/getType.js","webpack:///./node_modules/xe-utils/ceil.js","webpack:///./node_modules/xe-utils/delay.js","webpack:///./node_modules/xe-utils/staticWeekTime.js","webpack:///./node_modules/xe-utils/helperNumberAdd.js","webpack:///./node_modules/xe-utils/noop.js","webpack:///./node_modules/xe-utils/toStringDate.js"],"names":["isNumber","isNumberNaN","obj","isNaN","module","exports","toValueString","helperStringRepeat","repeat","str","count","staticStrFirst","staticStrLast","staticDayTime","helperGetDateFullYear","helperGetDateTime","helperGetDateMonth","toStringDate","isValidDate","getWhatMonth","date","offsetMonth","offsetDay","monthNum","Date","setDate","currDate","getDate","setMonth","endsWith","val","startIndex","rest","argsLen","arguments","length","substring","indexOf","staticParseInt","helperGetHGSKeys","hasOwnProp","sKeyRE","setDeepProps","key","isEnd","nextKey","value","index","currMatchs","match","nextMatchs","Array","set","property","isPrototypePolluted","props","len","eqNull","toJSONString","JSON","stringify","helperCreateToNumber","toInteger","each","helperCreateGetObjects","name","getIndex","proMethod","Object","result","push","staticHGKeyRE","has","prop","arrIndex","objProp","matchs","isHas","round","helperNumberOffsetPoint","toFixed","num","digits","nums","split","intStr","floatStr","digitOffsetIndex","Math","abs","helperGetYMDTime","getWhatYear","getYearDay","floor","NaN","helperCreatePickOmit","pick","helperCreateIndexOf","arrayIndexOf","objectEach","iterate","context","call","isArray","isInteger","isNull","isFloat","staticLocation","helperGetLocatOrigin","lastIndexOf","getBaseURL","pathname","lastIndex","helperCreateiterateIndexOf","findIndexOf","objectToString","prototype","toString","keys","lastForOf","list","isFunction","objectMap","helperCreateMinMax","max","itemVal","chunk","array","size","arrLen","slice","getDayOfMonth","month","includes","uniq","setupDefaults","assign","unTreeList","opts","optChildren","children","optData","data","optClear","clear","item","toTreeArray","options","treeOptions","handle","helperStringSubstring","helperStringUpperCase","helperStringLowerCase","camelCacheMaps","camelCase","strLen","replace","text","flag","upper","upperLen","isUndefined","padEnd","targetLength","padString","helperNumberDivide","getSize","sum","mean","staticWeekTime","getWhatWeek","offsetWeek","firstDay","hasCustomDay","hasStartDay","whatDayTime","viewStartDay","firstDayOfWeek","currentDay","getDay","customDay","offsetNum","service","axios","create","baseURL","process","withCredentials","headers","post","timeout","interceptors","request","use","config","error","console","log","Promise","reject","response","res","status","Code","contentType","Message","message","Msg","type","duration","Error","getEdurpColl","params","url","method","getBannerList","getBlockSubType","getNewsList","getNewsContent","getBoardListData","getBoardList","getNewActiveList","getUrgentNotice","getEventList","getRangeEvents","getMenuData","after","callback","runCount","rests","args","apply","concat","copyWithin","target","start","end","replaceIndex","replaceArray","targetIndex","endIndex","startsWith","before","this","arrayEach","forEach","lastArrayEach","lastObjectEach","lastEach","isDate","cookies","path","parentKey","parseDateFormat","dateDiffRules","clone","objectAssignFns","handleAssign","destination","isClone","source","filter","isLeapYear","getDayOfYear","year","helperDefaultCompare","v1","v2","get","arr","itemIndex","reduce","initialValue","reduceMethod","previous","isInitialVal","keyList","staticStrUndefined","supportWeakMap","WeakMap","isWeakMap","helperCreateInInObjectString","ceil","toNumberString","commafy","isNegative","commafyOptions","optDigits","isNum","RegExp","spaceNumber","separator","toNumber","parseFloat","origin","protocol","host","isString","values","helperCreateInTypeof","groupBy","countBy","argsSize","case1","case2","getWhatDay","offset","mode","getTime","helperMultiply","helperCreateMathNumber","numRest","numStr","fStr","subRest","ratio","pow","isRegExp","isBoolean","every","helperEqualCompare","val1","val2","compare","func","obj1","obj2","val1Keys","val2Keys","isObj1Arr","isObj2Arr","constructor","map","deepGetObj","invoke","paths","getYearWeek","padStart","handleCustomTemplate","formats","format","dateFormatRE","toDateString","formatString","hours","getHours","apm","parseDateRules","formatStringMatchs","fy","substr","fM","fd","fH","fh","fm","getMinutes","fs","getSeconds","fS","getMilliseconds","fZ","zoneHours","getTimezoneOffset","fW","fD","parseDates","yyyy","yy","MM","M","dd","d","HH","H","hh","h","mm","m","ss","s","SSS","S","ZZ","Z","WW","W","DDD","D","a","A","e","E","q","skip","scienceMatchs","absFlag","intNumStr","dIntNumStr","dFloatNumStr","sciencFlag","scienceNumStr","floatOffsetIndex","intOffsetIndex","dIntOffsetIndex","isNumberFinite","isFinite","helperCreateTreeFunc","mapTreeItem","parent","node","parseChildren","nodes","mapChildren","mapTree","nextTick","fn","shift","setTimeout","platform","arch","execPath","title","pid","browser","env","argv","binding","cwd","chdir","dir","resolve","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","helperDeleteProperty","undefined","helperNumberAdd","add","num1","num2","helperCreateIterateHandle","useArray","restIndex","matchValue","defaultValue","includeArrays","array1","array2","helperNewDate","supportSet","Set","isSet","trim","template","tmplRE","unzip","zip","throttle","wait","runFlag","optLeading","leading","optTrailing","trailing","runFn","endFn","cancelFn","clearTimeout","throttled","cancel","staticDecodeURIComponent","decodeURIComponent","helperCreateGetDateWeek","getStartDate","targetDate","targetOffsetDate","getFullYear","getMonth","targerStartDate","targetFirstDay","now","timestamp","orderBy","remove","strictTree","toArrayTree","idList","id","treeData","parentId","optStrict","strict","optKey","optParentKey","optMapChildren","optSortKey","sortKey","optReverse","reverse","treeMap","supportFormData","FormData","isFormData","isError","getValueByPath","getDeepProps","isEmpty","toArray","staticEscapeMap","helperFormatEscaper","unescapeMap","unescape","find","dataMap","replaceRegexp","join","staticWindow","window","min","helperNumberDecimal","number","setFullYear","findTreeItem","items","findTree","pluckProperty","removeKeys","splice","isPlainObject","helperGetYMD","once","done","flattenDeep","deep","vals","flatten","handleMerge","merge","ORDER_PROP_ASC","ORDER_PROP_DESC","handleSort","localeCompare","buildMultiOrders","confs","compares","item1","item2","order","getSortConfs","fieldConfs","sortConfs","field","sort","parseUrl","locat","href","findLast","isEqual","some","isMatch","objKeys","sourceKeys","key2","key1","toStringJSON","parse","entries","searchTreeItem","parentAllow","isAllow","hasChild","hasOriginal","original","sourceData","searchTree","isWindow","multiply","multiplier","multiplicand","pluck","staticDocument","isDocument","nodeType","divisor","dividend","str1","str2","divisorDecimal","dividendDecimal","powY","isMinus","isElement","nodeName","trimRight","staticEncodeURIComponent","encodeURIComponent","eachTreeItem","eachTree","zipObject","parseInt","last","forOf","toLowerCase","arrayLastIndexOf","subtract","subtrahend","minuend","digit1","digit2","precision","isEqualWith","divide","findLastIndexOf","hasOwnProperty","getMonthWeek","unserialize","parseURLQuery","uri","hashs","portText","searchs","parsed","hash","hostname","port","search","hashKey","hashQuery","searchQuery","__uniqueId","uniqueId","prefix","supportMap","Map","isMap","destructuring","sources","restKeys","isBrowseStorage","storage","testKey","setItem","removeItem","isBrowseType","navigator","userAgent","browse","$body","isChrome","isEdge","isMobile","isNode","isPC","isDoc","test","body","documentElement","core","edge","firefox","msie","safari","isLocalStorage","localStorage","isSessionStorage","sessionStorage","supportSymbol","Symbol","isSymbol","findKey","random","shuffle","currentDate","supportWeakSet","WeakSet","isWeakSet","param","isDateSame","date1","date2","isObject","createiterateEmpty","groupKey","toFormatString","range","stop","step","sortBy","union","arrays","maxItem","isArguments","defs","assigns","isDefs","extds","XEUtils","sample","filterTree","isTypeError","getType","omit","first","getWhatQuarter","getDateDiff","trimLeft","escape","kebabCase","noop","bind","debounce","delay","serialize","cookie","TypeError","getQuarterNumber","day","currMonth","monthOffset","mixin","methods","$context","setup","VERSION","location","normalizeArray","parts","allowAboveRoot","up","i","unshift","basename","matchedSlash","charCodeAt","xs","f","resolvedPath","resolvedAbsolute","charAt","p","normalize","isAbsolute","trailingSlash","relative","from","to","fromParts","toParts","samePartsLength","outputParts","sep","delimiter","dirname","code","hasRoot","ext","extname","startDot","startPart","preDotState","toUpperCase","stringifyParams","resultVal","resultKey","isArr","_arr","query","getCativeCtor","Ctor","__proto__","handleValueClone","isDeep","copyValue","restObj","valueOf","restArr","restSet","restMap","isLeading","debounced","document","toCookieUnitTime","unit","expires","nowdate","time","toCookieUTCString","toUTCString","keyIndex","inserts","hasCookieItem","cookieKeys","getCookieItem","setCookieItem","removeCookieItem","cookieJson","getItem","getJSON","helperGetUTCDateTime","resMaps","UTC","y","offsetIndex","startDate","endDate","rules","startTime","endTime","diffTime","rule","kebabCacheMaps","prevLower","nextLower","minVal","maxVal","addend","augend","getParseRule","txt","toParseMs","toParseNum","d2","d1or2","d1or7","d3or4","place","d1Or2RE","dzZ","defaulParseStrs","defaulParseREs","parseDefaultRules","matchRest","dfrLen","customParseStrs","parseRuleMaps","parseRuleKeys","itemRule","customParseRes","cacheFormatMaps","parseCustomRules","cacheItem","posIndexs","re","firstChar","_i","_r","parseTimeZone","isDType"],"mappings":"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","file":"js/chunk-7c6a7b54.30a0ca65.js","sourcesContent":["var isNumber = require('./isNumber')\r\n\r\n/* eslint-disable eqeqeq */\r\nfunction isNumberNaN (obj) {\r\n return isNumber(obj) && isNaN(obj)\r\n}\r\n\r\nmodule.exports = isNumberNaN\r\n","var toValueString = require('./toValueString')\r\n\r\nvar helperStringRepeat = require('./helperStringRepeat')\r\n\r\n/**\r\n * 将字符串重复 n 次\r\n *\r\n * @param {String} str 字符串\r\n * @param {Number} count 次数\r\n * @return {String}\r\n */\r\nfunction repeat (str, count) {\r\n return helperStringRepeat(toValueString(str), count)\r\n}\r\n\r\nmodule.exports = repeat\r\n","var staticStrFirst = require('./staticStrFirst')\r\nvar staticStrLast = require('./staticStrLast')\r\nvar staticDayTime = require('./staticDayTime')\r\n\r\nvar helperGetDateFullYear = require('./helperGetDateFullYear')\r\nvar helperGetDateTime = require('./helperGetDateTime')\r\nvar helperGetDateMonth = require('./helperGetDateMonth')\r\n\r\nvar toStringDate = require('./toStringDate')\r\nvar isValidDate = require('./isValidDate')\r\nvar isNumber = require('./isNumber')\r\n\r\n/**\r\n * 返回前几月或后几月的日期\r\n *\r\n * @param {Date} date 日期或数字\r\n * @param {Number} offsetMonth 月(默认当前月)、前几个月、后几个月\r\n * @param {Number/String} offsetDay 获取哪天:月初(first)、月末(last)、指定天数(数值),如果为空,但超过指定月份的天数时,则默认单月最后一天\r\n * @return {Date}\r\n */\r\nfunction getWhatMonth (date, offsetMonth, offsetDay) {\r\n var monthNum = offsetMonth && !isNaN(offsetMonth) ? offsetMonth : 0\r\n date = toStringDate(date)\r\n if (isValidDate(date)) {\r\n if (offsetDay === staticStrFirst) {\r\n return new Date(helperGetDateFullYear(date), helperGetDateMonth(date) + monthNum, 1)\r\n } else if (offsetDay === staticStrLast) {\r\n return new Date(helperGetDateTime(getWhatMonth(date, monthNum + 1, staticStrFirst)) - 1)\r\n } else if (isNumber(offsetDay)) {\r\n date.setDate(offsetDay)\r\n }\r\n if (monthNum) {\r\n var currDate = date.getDate()\r\n date.setMonth(helperGetDateMonth(date) + monthNum)\r\n if (currDate !== date.getDate()) {\r\n // 当为指定天数,且被跨月了,则默认单月最后一天\r\n date.setDate(1)\r\n return new Date(helperGetDateTime(date) - staticDayTime)\r\n }\r\n }\r\n }\r\n return date\r\n}\r\n\r\nmodule.exports = getWhatMonth\r\n","var toValueString = require('./toValueString')\r\n\r\n/**\r\n * 判断字符串是否在源字符串的尾部\r\n *\r\n * @param {String} str 字符串\r\n * @param {String/Number} val 值\r\n * @param {Number} startIndex 开始索引\r\n * @return {String}\r\n */\r\nfunction endsWith (str, val, startIndex) {\r\n var rest = toValueString(str)\r\n var argsLen = arguments.length\r\n return argsLen > 1 && (argsLen > 2 ? rest.substring(0, startIndex).indexOf(val) === startIndex - 1 : rest.indexOf(val) === rest.length - 1)\r\n}\r\n\r\nmodule.exports = endsWith\r\n","var staticParseInt = require('./staticParseInt')\r\n\r\nvar helperGetHGSKeys = require('./helperGetHGSKeys')\r\n\r\nvar hasOwnProp = require('./hasOwnProp')\r\n\r\nvar sKeyRE = /(.+)?\\[(\\d+)\\]$/\r\n\r\nfunction setDeepProps (obj, key, isEnd, nextKey, value) {\r\n if (obj[key]) {\r\n if (isEnd) {\r\n obj[key] = value\r\n }\r\n } else {\r\n var index\r\n var rest\r\n var currMatchs = key ? key.match(sKeyRE) : null\r\n if (isEnd) {\r\n rest = value\r\n } else {\r\n var nextMatchs = nextKey ? nextKey.match(sKeyRE) : null\r\n if (nextMatchs && !nextMatchs[1]) {\r\n // 如果下一个属性为数组类型\r\n rest = new Array(staticParseInt(nextMatchs[2]) + 1)\r\n } else {\r\n rest = {}\r\n }\r\n }\r\n if (currMatchs) {\r\n if (currMatchs[1]) {\r\n // 如果为对象中数组\r\n index = staticParseInt(currMatchs[2])\r\n if (obj[currMatchs[1]]) {\r\n if (isEnd) {\r\n obj[currMatchs[1]][index] = rest\r\n } else {\r\n if (obj[currMatchs[1]][index]) {\r\n rest = obj[currMatchs[1]][index]\r\n } else {\r\n obj[currMatchs[1]][index] = rest\r\n }\r\n }\r\n } else {\r\n obj[currMatchs[1]] = new Array(index + 1)\r\n obj[currMatchs[1]][index] = rest\r\n }\r\n } else {\r\n // 如果为数组\r\n obj[currMatchs[2]] = rest\r\n }\r\n } else {\r\n // 如果为对象\r\n obj[key] = rest\r\n }\r\n return rest\r\n }\r\n return obj[key]\r\n}\r\n\r\n/**\r\n * 设置对象属性上的值。如果属性不存在则创建它\r\n * @param {Object/Array} obj 对象\r\n * @param {String/Function} property 键、路径\r\n * @param {Object} value 值\r\n */\r\nfunction set (obj, property, value) {\r\n if (obj) {\r\n if ((obj[property] || hasOwnProp(obj, property)) && !isPrototypePolluted(property)) {\r\n obj[property] = value\r\n } else {\r\n var rest = obj\r\n var props = helperGetHGSKeys(property)\r\n var len = props.length\r\n for (var index = 0; index < len; index++) {\r\n if (isPrototypePolluted(props[index])) {\r\n continue\r\n }\r\n var isEnd = index === len - 1\r\n rest = setDeepProps(rest, props[index], isEnd, isEnd ? null : props[index + 1], value)\r\n }\r\n }\r\n }\r\n return obj\r\n}\r\n\r\n/**\r\n * Blacklist certain keys to prevent Prototype Pollution\r\n * @param {string} key\r\n */\r\nfunction isPrototypePolluted(key) {\r\n return key === '__proto__' || key === 'constructor' || key === 'prototype'\r\n}\r\n\r\nmodule.exports = set\r\n","var eqNull = require('./eqNull')\r\n\r\n/**\r\n * JSON转字符串\r\n *\r\n * @param {Object} obj 对象\r\n * @return {String} 返回字符串\r\n */\r\nfunction toJSONString (obj) {\r\n return eqNull(obj) ? '' : JSON.stringify(obj)\r\n}\r\n\r\nmodule.exports = toJSONString\r\n","var staticParseInt = require('./staticParseInt')\r\n\r\nvar helperCreateToNumber = require('./helperCreateToNumber')\r\n\r\n/**\r\n * 转整数\r\n * @param { String/Number } str 数值\r\n *\r\n * @return {Number}\r\n */\r\nvar toInteger = helperCreateToNumber(staticParseInt)\r\n\r\nmodule.exports = toInteger\r\n","var each = require('./each')\r\n\r\nfunction helperCreateGetObjects (name, getIndex) {\r\n var proMethod = Object[name]\r\n return function (obj) {\r\n var result = []\r\n if (obj) {\r\n if (proMethod) {\r\n return proMethod(obj)\r\n }\r\n each(obj, getIndex > 1 ? function (key) {\r\n result.push(['' + key, obj[key]])\r\n } : function () {\r\n result.push(arguments[getIndex])\r\n })\r\n }\r\n return result\r\n }\r\n}\r\n\r\nmodule.exports = helperCreateGetObjects\r\n","var staticHGKeyRE = require('./staticHGKeyRE')\r\n\r\nvar helperGetHGSKeys = require('./helperGetHGSKeys')\r\n\r\nvar hasOwnProp = require('./hasOwnProp')\r\n\r\n/**\r\n * 检查键、路径是否是该对象的属性\r\n *\r\n * @param {Object/Array} data 对象\r\n * @param {String/Function} property 键、路径\r\n * @return {Boolean}\r\n */\r\nfunction has (obj, property) {\r\n if (obj) {\r\n if (hasOwnProp(obj, property)) {\r\n return true\r\n } else {\r\n var prop, arrIndex, objProp, matchs, rest, isHas\r\n var props = helperGetHGSKeys(property)\r\n var index = 0\r\n var len = props.length\r\n for (rest = obj; index < len; index++) {\r\n isHas = false\r\n prop = props[index]\r\n matchs = prop ? prop.match(staticHGKeyRE) : ''\r\n if (matchs) {\r\n arrIndex = matchs[1]\r\n objProp = matchs[2]\r\n if (arrIndex) {\r\n if (rest[arrIndex]) {\r\n if (hasOwnProp(rest[arrIndex], objProp)) {\r\n isHas = true\r\n rest = rest[arrIndex][objProp]\r\n }\r\n }\r\n } else {\r\n if (hasOwnProp(rest, objProp)) {\r\n isHas = true\r\n rest = rest[objProp]\r\n }\r\n }\r\n } else {\r\n if (hasOwnProp(rest, prop)) {\r\n isHas = true\r\n rest = rest[prop]\r\n }\r\n }\r\n if (isHas) {\r\n if (index === len - 1) {\r\n return true\r\n }\r\n } else {\r\n break\r\n }\r\n }\r\n }\r\n }\r\n return false\r\n}\r\n\r\nmodule.exports = has\r\n","var round = require('./round')\r\nvar toValueString = require('./toValueString')\r\n\r\nvar helperStringRepeat = require('./helperStringRepeat')\r\nvar helperNumberOffsetPoint = require('./helperNumberOffsetPoint')\r\n\r\n/**\r\n * 将数值四舍五入并格式化为固定小数位的字符串\r\n *\r\n * @param {string|number} num 数值\r\n * @param {number} digits 小数保留位数\r\n * @return {String}\r\n */\r\nfunction toFixed (num, digits) {\r\n digits = digits >> 0\r\n var str = toValueString(round(num, digits))\r\n var nums = str.split('.')\r\n var intStr = nums[0]\r\n var floatStr = nums[1] || ''\r\n var digitOffsetIndex = digits - floatStr.length\r\n if (digits) {\r\n if (digitOffsetIndex > 0) {\r\n return intStr + '.' + floatStr + helperStringRepeat('0', digitOffsetIndex)\r\n }\r\n return intStr + helperNumberOffsetPoint(floatStr, Math.abs(digitOffsetIndex))\r\n }\r\n return intStr\r\n}\r\n\r\nmodule.exports = toFixed\r\n","var staticDayTime = require('./staticDayTime')\r\nvar staticStrFirst = require('./staticStrFirst')\r\n\r\nvar helperGetYMDTime = require('./helperGetYMDTime')\r\n\r\nvar getWhatYear = require('./getWhatYear')\r\nvar toStringDate = require('./toStringDate')\r\n\r\nvar isValidDate = require('./isValidDate')\r\n\r\n/**\r\n * 返回某个年份的第几天\r\n *\r\n * @param {Date} date 日期或数字\r\n * @return {Number}\r\n */\r\nfunction getYearDay (date) {\r\n date = toStringDate(date)\r\n if (isValidDate(date)) {\r\n return Math.floor((helperGetYMDTime(date) - helperGetYMDTime(getWhatYear(date, 0, staticStrFirst))) / staticDayTime) + 1\r\n }\r\n return NaN\r\n}\r\n\r\nmodule.exports = getYearDay\r\n","var helperCreatePickOmit = require('./helperCreatePickOmit')\r\n\r\n/**\r\n * 根据 key 过滤指定的属性值,返回一个新的对象\r\n *\r\n * @param {Object} obj 对象\r\n * @param {String/Array} key 键数组\r\n * @return {Object}\r\n */\r\nvar pick = helperCreatePickOmit(1, 0)\r\n\r\nmodule.exports = pick\r\n","var helperCreateIndexOf = require('./helperCreateIndexOf')\r\n\r\nvar arrayIndexOf = require('./arrayIndexOf')\r\n\r\n/**\r\n * 返回对象第一个索引值\r\n *\r\n * @param {Object} obj 对象\r\n * @param {Object} val 值\r\n * @return {Number}\r\n */\r\nvar indexOf = helperCreateIndexOf('indexOf', arrayIndexOf)\r\n\r\nmodule.exports = indexOf\r\n","var hasOwnProp = require('./hasOwnProp')\r\n\r\nfunction objectEach (obj, iterate, context) {\r\n if (obj) {\r\n for (var key in obj) {\r\n if (hasOwnProp(obj, key)) {\r\n iterate.call(context, obj[key], key, obj)\r\n }\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = objectEach\r\n","var isArray = require('./isArray')\r\nvar isInteger = require('./isInteger')\r\nvar isNull = require('./isNull')\r\n\r\n/**\r\n * 判断是否小数\r\n *\r\n * @param {Number} obj 数值\r\n * @return {Boolean}\r\n */\r\nfunction isFloat (obj) {\r\n return !isNull(obj) && !isNaN(obj) && !isArray(obj) && !isInteger(obj)\r\n}\r\n\r\nmodule.exports = isFloat\r\n","var staticLocation = require('./staticLocation')\r\n\r\nvar helperGetLocatOrigin = require('./helperGetLocatOrigin')\r\n\r\nvar lastIndexOf = require('./lastIndexOf')\r\n\r\nfunction getBaseURL () {\r\n if (staticLocation) {\r\n var pathname = staticLocation.pathname\r\n var lastIndex = lastIndexOf(pathname, '/') + 1\r\n return helperGetLocatOrigin() + (lastIndex === pathname.length ? pathname : pathname.substring(0, lastIndex))\r\n }\r\n return ''\r\n}\r\n\r\nmodule.exports = getBaseURL\r\n","var helperCreateiterateIndexOf = require('./helperCreateiterateIndexOf')\r\n\r\n/**\r\n * 返回对象第一个索引值\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Object}\r\n */\r\nvar findIndexOf = helperCreateiterateIndexOf(function (obj, iterate, context) {\r\n for (var index = 0, len = obj.length; index < len; index++) {\r\n if (iterate.call(context, obj[index], index, obj)) {\r\n return index\r\n }\r\n }\r\n return -1\r\n})\r\n\r\nmodule.exports = findIndexOf\r\n","var objectToString = Object.prototype.toString\r\n\r\nmodule.exports = objectToString\r\n","var isArray = require('./isArray')\r\nvar keys = require('./hasOwnProp')\r\n\r\n/**\r\n * 已废弃\r\n * @deprecated\r\n */\r\nfunction lastForOf (obj, iterate, context) {\r\n if (obj) {\r\n var len, list\r\n if (isArray(obj)) {\r\n for (len = obj.length - 1; len >= 0; len--) {\r\n if (iterate.call(context, obj[len], len, obj) === false) {\r\n break\r\n }\r\n }\r\n } else {\r\n list = keys(obj)\r\n for (len = list.length - 1; len >= 0; len--) {\r\n if (iterate.call(context, obj[list[len]], list[len], obj) === false) {\r\n break\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = lastForOf\r\n","var each = require('./each')\r\nvar isFunction = require('./isFunction')\r\nvar property = require('./property')\r\n\r\n/**\r\n * 指定方法后的返回值组成的新对象\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Object}\r\n */\r\nfunction objectMap (obj, iterate, context) {\r\n var result = {}\r\n if (obj) {\r\n if (iterate) {\r\n if (!isFunction(iterate)) {\r\n iterate = property(iterate)\r\n }\r\n each(obj, function (val, index) {\r\n result[index] = iterate.call(context, val, index, obj)\r\n })\r\n } else {\r\n return obj\r\n }\r\n }\r\n return result\r\n}\r\n\r\nmodule.exports = objectMap\r\n","var helperCreateMinMax = require('./helperCreateMinMax')\r\n\r\n/**\r\n * 获取最大值\r\n *\r\n * @param {Array} arr 数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @return {Number}\r\n */\r\nvar max = helperCreateMinMax(function (rest, itemVal) {\r\n return rest < itemVal\r\n})\r\n\r\nmodule.exports = max\r\n","var isArray = require('./isArray')\r\n\r\n/**\r\n * 将一个数组分割成大小的组。如果数组不能被平均分配,那么最后一块将是剩下的元素\r\n *\r\n * @param {Array} array 数组\r\n * @param {Number} size 每组大小\r\n * @return {Array}\r\n */\r\nfunction chunk (array, size) {\r\n var index\r\n var result = []\r\n var arrLen = size >> 0 || 1\r\n if (isArray(array)) {\r\n if (arrLen >= 0 && array.length > arrLen) {\r\n index = 0\r\n while (index < array.length) {\r\n result.push(array.slice(index, index + arrLen))\r\n index += arrLen\r\n }\r\n } else {\r\n result = array.length ? [array] : array\r\n }\r\n }\r\n return result\r\n}\r\n\r\nmodule.exports = chunk\r\n","var staticDayTime = require('./staticDayTime')\r\nvar staticStrFirst = require('./staticStrFirst')\r\nvar staticStrLast = require('./staticStrLast')\r\n\r\nvar helperGetDateTime = require('./helperGetDateTime')\r\n\r\nvar getWhatMonth = require('./getWhatMonth')\r\nvar toStringDate = require('./toStringDate')\r\n\r\nvar isValidDate = require('./isValidDate')\r\n\r\n/**\r\n * 返回某个月份的天数\r\n *\r\n * @param {Date} date 日期或数字\r\n * @param {Number} offset 月(默认当月)、前几个月、后几个月\r\n * @return {Number}\r\n */\r\nfunction getDayOfMonth (date, month) {\r\n date = toStringDate(date)\r\n if (isValidDate(date)) {\r\n return Math.floor((helperGetDateTime(getWhatMonth(date, month, staticStrLast)) - helperGetDateTime(getWhatMonth(date, month, staticStrFirst))) / staticDayTime) + 1\r\n }\r\n return NaN\r\n}\r\n\r\nmodule.exports = getDayOfMonth\r\n","var each = require('./each')\r\nvar includes = require('./includes')\r\n\r\n/**\r\n * 数组去重\r\n *\r\n * @param {Array} array 数组\r\n * @return {Array}\r\n */\r\nfunction uniq (array) {\r\n var result = []\r\n each(array, function (value) {\r\n if (!includes(result, value)) {\r\n result.push(value)\r\n }\r\n })\r\n return result\r\n}\r\n\r\nmodule.exports = uniq\r\n","var setupDefaults = require('./setupDefaults')\r\n\r\nvar each = require('./each')\r\n\r\nvar assign = require('./assign')\r\n\r\nfunction unTreeList (result, array, opts) {\r\n var optChildren = opts.children\r\n var optData = opts.data\r\n var optClear = opts.clear\r\n each(array, function (item) {\r\n var children = item[optChildren]\r\n if (optData) {\r\n item = item[optData]\r\n }\r\n result.push(item)\r\n if (children && children.length) {\r\n unTreeList(result, children, opts)\r\n }\r\n if (optClear) {\r\n delete item[optChildren]\r\n }\r\n })\r\n return result\r\n}\r\n\r\n/**\r\n * 将一个树结构转成数组列表\r\n *\r\n * @param {Array} array 数组\r\n * @param {Object} options { children: 'children', data: 'data', clear: false }\r\n * @return {Array}\r\n */\r\nfunction toTreeArray (array, options) {\r\n return unTreeList([], array, assign({}, setupDefaults.treeOptions, options))\r\n}\r\n\r\nmodule.exports = toTreeArray\r\n","function helperCreateToNumber (handle) {\r\n return function (str) {\r\n if (str) {\r\n var num = handle(str)\r\n if (!isNaN(num)) {\r\n return num\r\n }\r\n }\r\n return 0\r\n }\r\n}\r\n\r\nmodule.exports = helperCreateToNumber\r\n","var toValueString = require('./toValueString')\r\nvar helperStringSubstring = require('./helperStringSubstring')\r\nvar helperStringUpperCase = require('./helperStringUpperCase')\r\nvar helperStringLowerCase = require('./helperStringLowerCase')\r\n\r\nvar camelCacheMaps = {}\r\n\r\n/**\r\n * 将带字符串转成驼峰字符串,例如: project-name 转为 projectName\r\n *\r\n * @param {String} str 字符串\r\n * @return {String}\r\n */\r\nfunction camelCase (str) {\r\n str = toValueString(str)\r\n if (camelCacheMaps[str]) {\r\n return camelCacheMaps[str]\r\n }\r\n var strLen = str.length\r\n var rest = str.replace(/([-]+)/g, function (text, flag, index) {\r\n return index && index + flag.length < strLen ? '-' : ''\r\n })\r\n strLen = rest.length\r\n rest = rest.replace(/([A-Z]+)/g, function (text, upper, index) {\r\n var upperLen = upper.length\r\n upper = helperStringLowerCase(upper)\r\n if (index) {\r\n if (upperLen > 2 && index + upperLen < strLen) {\r\n return helperStringUpperCase(helperStringSubstring(upper, 0, 1)) + helperStringSubstring(upper, 1, upperLen - 1) + helperStringUpperCase(helperStringSubstring(upper, upperLen - 1, upperLen))\r\n }\r\n return helperStringUpperCase(helperStringSubstring(upper, 0, 1)) + helperStringSubstring(upper, 1, upperLen)\r\n } else {\r\n if (upperLen > 1 && index + upperLen < strLen) {\r\n return helperStringSubstring(upper, 0, upperLen - 1) + helperStringUpperCase(helperStringSubstring(upper, upperLen - 1, upperLen))\r\n }\r\n }\r\n return upper\r\n }).replace(/(-[a-zA-Z])/g, function (text, upper) {\r\n return helperStringUpperCase(helperStringSubstring(upper, 1, upper.length))\r\n })\r\n camelCacheMaps[str] = rest\r\n return rest\r\n}\r\n\r\nmodule.exports = camelCase\r\n","var toValueString = require('./toValueString')\r\n\r\nvar isUndefined = require('./isUndefined')\r\n\r\nvar helperStringRepeat = require('./helperStringRepeat')\r\n\r\n/**\r\n * 用指定字符从后面开始补全字符串\r\n *\r\n * @param {String} str 字符串\r\n * @param {Number} targetLength 结果长度\r\n * @param {Number} padString 补全字符\r\n * @return {String}\r\n */\r\nfunction padEnd (str, targetLength, padString) {\r\n var rest = toValueString(str)\r\n targetLength = targetLength >> 0\r\n padString = isUndefined(padString) ? ' ' : '' + padString\r\n if (rest.padEnd) {\r\n return rest.padEnd(targetLength, padString)\r\n }\r\n if (targetLength > rest.length) {\r\n targetLength -= rest.length\r\n if (targetLength > padString.length) {\r\n padString += helperStringRepeat(padString, targetLength / padString.length)\r\n }\r\n return rest + padString.slice(0, targetLength)\r\n }\r\n return rest\r\n}\r\n\r\nmodule.exports = padEnd\r\n","var helperNumberDivide = require('./helperNumberDivide')\r\n\r\nvar getSize = require('./getSize')\r\n\r\nvar sum = require('./sum')\r\n\r\n/**\r\n * 求平均值函数\r\n *\r\n * @param {Array} array 数组\r\n * @param {Function/String} iterate 方法或属性\r\n * @param {Object} context 上下文\r\n * @return {Number}\r\n */\r\nfunction mean (array, iterate, context) {\r\n return helperNumberDivide(sum(array, iterate, context), getSize(array))\r\n}\r\n\r\nmodule.exports = mean\r\n","var setupDefaults = require('./setupDefaults')\r\n\r\nvar staticDayTime = require('./staticDayTime')\r\nvar staticWeekTime = require('./staticWeekTime')\r\n\r\nvar helperGetDateTime = require('./helperGetDateTime')\r\n\r\nvar toStringDate = require('./toStringDate')\r\n\r\nvar isValidDate = require('./isValidDate')\r\nvar isNumber = require('./isNumber')\r\n\r\n/**\r\n * 返回前几周或后几周的星期几\r\n *\r\n * @param {Date} date 日期\r\n * @param {Number} offsetWeek 周(默认当前周)、前几周、后几周\r\n * @param {Number} offsetDay 星期天(默认0)、星期一(1)、星期二(2)、星期三(3)、星期四(4)、星期五(5)、星期六(6)\r\n * @param {Number} firstDay 周视图的起始天,默认星期一\r\n * @return {Date}\r\n */\r\nfunction getWhatWeek (date, offsetWeek, offsetDay, firstDay) {\r\n date = toStringDate(date)\r\n if (isValidDate(date)) {\r\n var hasCustomDay = isNumber(offsetDay)\r\n var hasStartDay = isNumber(firstDay)\r\n var whatDayTime = helperGetDateTime(date)\r\n // 如果指定了天或周视图起始天\r\n if (hasCustomDay || hasStartDay) {\r\n var viewStartDay = hasStartDay ? firstDay : setupDefaults.firstDayOfWeek\r\n var currentDay = date.getDay()\r\n var customDay = hasCustomDay ? offsetDay : currentDay\r\n if (currentDay !== customDay) {\r\n var offsetNum = 0\r\n if (viewStartDay > currentDay) {\r\n offsetNum = -(7 - viewStartDay + currentDay)\r\n } else if (viewStartDay < currentDay) {\r\n offsetNum = viewStartDay - currentDay\r\n }\r\n if (customDay > viewStartDay) {\r\n whatDayTime += ((customDay === 0 ? 7 : customDay) - viewStartDay + offsetNum) * staticDayTime\r\n } else if (customDay < viewStartDay) {\r\n whatDayTime += (7 - viewStartDay + customDay + offsetNum) * staticDayTime\r\n } else {\r\n whatDayTime += offsetNum * staticDayTime\r\n }\r\n }\r\n }\r\n if (offsetWeek && !isNaN(offsetWeek)) {\r\n whatDayTime += offsetWeek * staticWeekTime\r\n }\r\n return new Date(whatDayTime)\r\n }\r\n return date\r\n}\r\n\r\nmodule.exports = getWhatWeek\r\n","/*\r\n * @Author: cmchiu\r\n * @Date: 2022-04-12 15:51:42\r\n * @LastEditTime: 2022-10-03 11:47:38\r\n * @LastEditors: cmchiu\r\n * @Description:\r\n * @FilePath: \\campus2022\\campus2022-ClientApp\\src\\utils\\request.js\r\n *\r\n */\r\nimport axios from 'axios'\r\nimport { /* MessageBox, */ Message } from 'element-ui'\r\n\r\n// create an axios instance\r\nconst service = axios.create({\r\n baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url\r\n withCredentials: true, // send cookies when cross-domain requests\r\n headers: {\r\n post: { 'Content-Type': 'application/json;charset=UTF-8' },\r\n },\r\n timeout: 5000, // request timeout\r\n})\r\n\r\n// request interceptor\r\nservice.interceptors.request.use(\r\n config => {\r\n // do something before request is sent\r\n\r\n /* if (store.getters.token) {\r\n // let each request carry token\r\n // ['X-Token'] is a custom headers key\r\n // please modify it according to the actual situation\r\n config.headers['Authorization'] = 'Bearer ' + getToken()\r\n } */\r\n return config\r\n },\r\n error => {\r\n // do something with request error\r\n console.log(error) // for debug\r\n return Promise.reject(error)\r\n }\r\n)\r\n\r\n// response interceptor\r\nservice.interceptors.response.use(\r\n /**\r\n * If you want to get http information such as headers or status\r\n * Please return response => response\r\n */\r\n\r\n /**\r\n * Determine the request status by custom code\r\n * Here is just an example\r\n * You can also judge the status by HTTP Status Code\r\n */\r\n response => {\r\n const res = response.data\r\n\r\n // if the custom code is not 20000, it is judged as an error.\r\n if (response.status >= 200 && response.status < 300 && !res.Code) {\r\n if (response.headers['content-length'] === '0') {\r\n return null\r\n } else {\r\n return res\r\n }\r\n } else if (res.Code !== 1 && res.Code !== 5000) {\r\n const contentType = [\r\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', // docx\r\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', // xlsx\r\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation', // pptx\r\n 'application/msword',\r\n 'application/vnd.ms-excel',\r\n 'application/vnd.ms-powerpoint',\r\n 'application/pdf',\r\n 'text/plain',\r\n 'text/xml',\r\n 'application/octet-stream',\r\n 'application/zip',\r\n ]\r\n if (\r\n response.headers['content-type'].indexOf('image') >= 0 ||\r\n contentType.includes(response.headers['content-type'])\r\n ) {\r\n return response\r\n } else {\r\n Message({\r\n message: res.Msg || 'Error',\r\n type: 'error',\r\n duration: 5 * 1000,\r\n })\r\n\r\n /* // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;\r\n if (res.Code === 50008 || res.Code === 50012 || res.Code === 50014) {\r\n // to re-login\r\n MessageBox.confirm(\r\n 'You have been logged out, you can cancel to stay on this page, or log in again',\r\n 'Confirm logout',\r\n {\r\n confirmButtonText: 'Re-Login',\r\n cancelButtonText: 'Cancel',\r\n type: 'warning',\r\n }\r\n ).then(() => {\r\n store.dispatch('user/resetToken').then(() => {\r\n location.reload()\r\n })\r\n })\r\n } */\r\n return Promise.reject(new Error(res.Msg || 'Error'))\r\n }\r\n } else {\r\n if (res.Code === 5000) {\r\n Message({\r\n message: res.Msg || 'Warning',\r\n type: 'warning',\r\n duration: 3 * 1000,\r\n })\r\n }\r\n\r\n return res\r\n }\r\n },\r\n error => {\r\n console.log('err' + error) // for debug\r\n Message({\r\n message: error.message || 'Error',\r\n type: 'error',\r\n duration: 5 * 1000,\r\n })\r\n return Promise.reject(error)\r\n }\r\n)\r\n\r\nexport default service\r\n","/*\r\n * @Author: cmchiu\r\n * @Date: 2022-04-14 15:28:12\r\n * @LastEditTime: 2022-08-15 09:48:39\r\n * @LastEditors: cmchiu\r\n * @Description:\r\n * @FilePath: \\campus2022\\campus2022-ClientApp\\src\\api\\campus.js\r\n *\r\n */\r\nimport request from '@/utils/request'\r\n\r\nexport const getEmergencyContact = params => {\r\n return request({\r\n url: '/EdurpColl/GetCampus_EmergencyContact',\r\n method: 'get',\r\n params,\r\n })\r\n}\r\n\r\nexport const getEdurpColl = params => {\r\n return request({\r\n url: '/EdurpColl/GetEdurpColl',\r\n method: 'get',\r\n params,\r\n })\r\n}\r\n\r\nexport const getBannerList = params => {\r\n return request({\r\n url: '/Banner/GetBannerList',\r\n method: 'get',\r\n params,\r\n timeout: 300000,\r\n })\r\n}\r\n\r\nexport const getRunBanner = params => {\r\n return request({\r\n url: '/Banner/GetRunBanner',\r\n method: 'get',\r\n params,\r\n timeout: 300000,\r\n })\r\n}\r\n\r\nexport const getBlockSubType = params => {\r\n return request({\r\n url: '/News/GetBlockSubType',\r\n method: 'get',\r\n params,\r\n timeout: 300000,\r\n })\r\n}\r\n\r\nexport const getNewsList = params => {\r\n return request({\r\n url: '/News/GetNewsList',\r\n method: 'get',\r\n params,\r\n timeout: 300000,\r\n })\r\n}\r\n\r\nexport const getNewsContent = params => {\r\n return request({\r\n url: '/News/GetNewsContent',\r\n method: 'get',\r\n params,\r\n timeout: 300000,\r\n })\r\n}\r\n\r\nexport const getBoardListData = params => {\r\n return request({\r\n url: '/News/GetBoardListData',\r\n method: 'get',\r\n params,\r\n timeout: 300000,\r\n })\r\n}\r\n\r\nexport const getBoardList = params => {\r\n return request({\r\n url: '/News/GetBoardList',\r\n method: 'get',\r\n params,\r\n timeout: 300000,\r\n })\r\n}\r\n\r\nexport const getNewActiveList = params => {\r\n return request({\r\n url: '/NewActive/GetNewActiveList',\r\n method: 'get',\r\n params,\r\n timeout: 300000,\r\n })\r\n}\r\n\r\nexport const getUrgentNotice = params => {\r\n return request({\r\n url: '/Notice/GetUrgentNotice',\r\n method: 'get',\r\n params,\r\n timeout: 300000,\r\n })\r\n}\r\n\r\nexport const getEventList = params => {\r\n return request({\r\n url: '/Calendar/GetEventList',\r\n method: 'get',\r\n params,\r\n timeout: 300000,\r\n })\r\n}\r\n\r\nexport const getRangeEvents = params => {\r\n return request({\r\n url: '/Calendar/GetRangeEvents',\r\n method: 'get',\r\n params,\r\n timeout: 300000,\r\n })\r\n}\r\n\r\nexport const getMenuData = params => {\r\n return request({\r\n url: '/Menu/GetMenuData',\r\n method: 'get',\r\n params,\r\n timeout: 300000,\r\n })\r\n}\r\n\r\nconst campus = {\r\n getEmergencyContact,\r\n getEdurpColl,\r\n getBannerList,\r\n getRunBanner,\r\n getBlockSubType,\r\n getNewsList,\r\n getNewsContent,\r\n getBoardListData,\r\n getBoardList,\r\n getNewActiveList,\r\n getUrgentNotice,\r\n getEventList,\r\n getRangeEvents,\r\n getMenuData,\r\n}\r\nexport default campus\r\n","var hasOwnProp = require('./hasOwnProp')\r\n\r\n/**\r\n * 判断对象是否包含该值,成功返回true否则false\r\n *\r\n * @param {Object} obj 对象\r\n * @param {Object} val 值\r\n * @return {Boolean}\r\n */\r\nfunction includes (obj, val) {\r\n if (obj) {\r\n if (obj.includes) {\r\n return obj.includes(val)\r\n }\r\n for (var key in obj) {\r\n if (hasOwnProp(obj, key)) {\r\n if (val === obj[key]) {\r\n return true\r\n }\r\n }\r\n }\r\n }\r\n return false\r\n}\r\n\r\nmodule.exports = includes\r\n","var slice = require('./slice')\r\n\r\n/**\r\n * 创建一个函数, 调用次数超过 count 次之后执行回调并将所有结果记住后返回\r\n *\r\n * @param {Number} count 调用次数\r\n * @param {Function} callback 完成回调\r\n * @return {Object}\r\n */\r\nfunction after (count, callback, context) {\r\n var runCount = 0\r\n var rests = []\r\n return function () {\r\n var args = arguments\r\n runCount++\r\n if (runCount <= count) {\r\n rests.push(args[0])\r\n }\r\n if (runCount >= count) {\r\n callback.apply(context, [rests].concat(slice(args)))\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = after\r\n","var isArray = require('./isArray')\r\n\r\n/**\r\n * 浅复制数组的一部分到同一数组中的另一个位置,数组大小不变\r\n *\r\n * @param {Array} array 数组\r\n * @param {Number} target 从该位置开始替换数据\r\n * @param {Number} start 从该位置开始读取数据,默认为 0 。如果为负值,表示倒数\r\n * @param {Number} end 到该位置前停止读取数据,默认等于数组长度。如果为负值,表示倒数\r\n * @return {Array}\r\n */\r\nfunction copyWithin (array, target, start, end) {\r\n if (isArray(array) && array.copyWithin) {\r\n return array.copyWithin(target, start, end)\r\n }\r\n var replaceIndex, replaceArray\r\n var targetIndex = target >> 0\r\n var startIndex = start >> 0\r\n var len = array.length\r\n var endIndex = arguments.length > 3 ? end >> 0 : len\r\n if (targetIndex < len) {\r\n targetIndex = targetIndex >= 0 ? targetIndex : len + targetIndex\r\n if (targetIndex >= 0) {\r\n startIndex = startIndex >= 0 ? startIndex : len + startIndex\r\n endIndex = endIndex >= 0 ? endIndex : len + endIndex\r\n if (startIndex < endIndex) {\r\n for (replaceIndex = 0, replaceArray = array.slice(startIndex, endIndex); targetIndex < len; targetIndex++) {\r\n if (replaceArray.length <= replaceIndex) {\r\n break\r\n }\r\n array[targetIndex] = replaceArray[replaceIndex++]\r\n }\r\n }\r\n }\r\n }\r\n return array\r\n}\r\n\r\nmodule.exports = copyWithin\r\n","var toValueString = require('./toValueString')\r\n\r\n/**\r\n * 判断字符串是否在源字符串的头部\r\n *\r\n * @param {String} str 字符串\r\n * @param {String/Number} val 值\r\n * @param {Number} startIndex 开始索引\r\n * @return {String}\r\n */\r\nfunction startsWith (str, val, startIndex) {\r\n var rest = toValueString(str)\r\n return (arguments.length === 1 ? rest : rest.substring(startIndex)).indexOf(val) === 0\r\n}\r\n\r\nmodule.exports = startsWith\r\n","var slice = require('./slice')\r\n\r\n/**\r\n * 创建一个函数, 调用次数不超过 count 次之前执行回调并将所有结果记住后返回\r\n *\r\n * @param {Number} count 调用次数\r\n * @param {Function} callback 完成回调\r\n * @return {Object}\r\n */\r\nfunction before (count, callback, context) {\r\n var runCount = 0\r\n var rests = []\r\n context = context || this\r\n return function () {\r\n var args = arguments\r\n runCount++\r\n if (runCount < count) {\r\n rests.push(args[0])\r\n callback.apply(context, [rests].concat(slice(args)))\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = before\r\n","function arrayEach (list, iterate, context) {\r\n if (list) {\r\n if (list.forEach) {\r\n list.forEach(iterate, context)\r\n } else {\r\n for (var index = 0, len = list.length; index < len; index++) {\r\n iterate.call(context, list[index], index, list)\r\n }\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = arrayEach\r\n","var isArray = require('./isArray')\r\nvar lastArrayEach = require('./lastArrayEach')\r\nvar lastObjectEach = require('./lastObjectEach')\r\n\r\n/**\r\n * 迭代器,从最后开始迭代\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Object}\r\n */\r\nfunction lastEach (obj, iterate, context) {\r\n if (obj) {\r\n return (isArray(obj) ? lastArrayEach : lastObjectEach)(obj, iterate, context)\r\n }\r\n return obj\r\n}\r\n\r\nmodule.exports = lastEach\r\n","var isDate = require('./isDate')\r\nvar helperGetDateTime = require('./helperGetDateTime')\r\n\r\n/**\r\n * 判断是否有效的Date对象\r\n *\r\n * @param {any} val 对象\r\n * @return {boolean}\r\n */\r\nfunction isValidDate (val) {\r\n return isDate(val) && !isNaN(helperGetDateTime(val))\r\n}\r\n\r\nmodule.exports = isValidDate\r\n","'use strict'\r\n\r\nvar setupDefaults = {\r\n cookies: {\r\n path: '/'\r\n },\r\n treeOptions: {\r\n parentKey: 'parentId',\r\n key: 'id',\r\n children: 'children'\r\n },\r\n parseDateFormat: 'yyyy-MM-dd HH:mm:ss',\r\n firstDayOfWeek: 1,\r\n dateDiffRules: [\r\n ['yyyy', 31536000000],\r\n ['MM', 2592000000],\r\n ['dd', 86400000],\r\n ['HH', 3600000],\r\n ['mm', 60000],\r\n ['ss', 1000],\r\n ['S', 0]\r\n ]\r\n}\r\n\r\nmodule.exports = setupDefaults\r\n","var arrayEach = require('./arrayEach')\r\nvar keys = require('./keys')\r\nvar isArray = require('./isArray')\r\nvar clone = require('./clone')\r\n\r\nvar objectAssignFns = Object.assign\r\n\r\nfunction handleAssign (destination, args, isClone) {\r\n var len = args.length\r\n for (var source, index = 1; index < len; index++) {\r\n source = args[index]\r\n arrayEach(keys(args[index]), isClone ? function (key) {\r\n destination[key] = clone(source[key], isClone)\r\n } : function (key) {\r\n destination[key] = source[key]\r\n })\r\n }\r\n return destination\r\n}\r\n\r\n/**\r\n * 将一个或多个源对象复制到目标对象中\r\n *\r\n * @param {Object} target 目标对象\r\n * @param {...Object}\r\n * @return {Boolean}\r\n */\r\nvar assign = function (target) {\r\n if (target) {\r\n var args = arguments\r\n if (target === true) {\r\n if (args.length > 1) {\r\n target = isArray(target[1]) ? [] : {}\r\n return handleAssign(target, args, true)\r\n }\r\n } else {\r\n return objectAssignFns ? objectAssignFns.apply(Object, args) : handleAssign(target, args)\r\n }\r\n }\r\n return target\r\n}\r\n\r\nmodule.exports = assign\r\n","var each = require('./each')\r\n\r\n/**\r\n * 根据回调过滤数据\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Object}\r\n */\r\nfunction filter (obj, iterate, context) {\r\n var result = []\r\n if (obj && iterate) {\r\n if (obj.filter) {\r\n return obj.filter(iterate, context)\r\n }\r\n each(obj, function (val, key) {\r\n if (iterate.call(context, val, key, obj)) {\r\n result.push(val)\r\n }\r\n })\r\n }\r\n return result\r\n}\r\n\r\nmodule.exports = filter\r\n","var getWhatYear = require('./getWhatYear')\r\nvar toStringDate = require('./toStringDate')\r\n\r\nvar isValidDate = require('./isValidDate')\r\nvar isLeapYear = require('./isLeapYear')\r\n\r\n/**\r\n * 返回某个年份的天数\r\n *\r\n * @param {Date} date 日期或数字\r\n * @param {Number} offset 年(默认当年)、前几个年、后几个年\r\n * @return {Number}\r\n */\r\nfunction getDayOfYear (date, year) {\r\n date = toStringDate(date)\r\n if (isValidDate(date)) {\r\n return isLeapYear(getWhatYear(date, year)) ? 366 : 365\r\n }\r\n return NaN\r\n}\r\n\r\nmodule.exports = getDayOfYear\r\n","function helperDefaultCompare (v1, v2) {\r\n return v1 === v2\r\n}\r\n\r\nmodule.exports = helperDefaultCompare\r\n","var isFunction = require('./isFunction')\r\nvar eqNull = require('./eqNull')\r\nvar get = require('./get')\r\n\r\nvar arrayEach = require('./arrayEach')\r\n\r\nfunction helperCreateMinMax (handle) {\r\n return function (arr, iterate) {\r\n if (arr && arr.length) {\r\n var rest, itemIndex\r\n arrayEach(arr, function (itemVal, index) {\r\n if (iterate) {\r\n itemVal = isFunction(iterate) ? iterate(itemVal, index, arr) : get(itemVal, iterate)\r\n }\r\n if (!eqNull(itemVal) && (eqNull(rest) || handle(rest, itemVal))) {\r\n itemIndex = index\r\n rest = itemVal\r\n }\r\n })\r\n return arr[itemIndex]\r\n }\r\n return rest\r\n }\r\n}\r\n\r\nmodule.exports = helperCreateMinMax\r\n","var keys = require('./keys')\r\n\r\n/**\r\n * 接收一个函数作为累加器,数组中的每个值(从左到右)开始合并,最终为一个值。\r\n *\r\n * @param {Array} array 数组\r\n * @param {Function} callback 方法\r\n * @param {Object} initialValue 初始值\r\n * @return {Number}\r\n */\r\nfunction reduce (array, callback, initialValue) {\r\n if (array) {\r\n var len, reduceMethod\r\n var index = 0\r\n var context = null\r\n var previous = initialValue\r\n var isInitialVal = arguments.length > 2\r\n var keyList = keys(array)\r\n if (array.length && array.reduce) {\r\n reduceMethod = function () {\r\n return callback.apply(context, arguments)\r\n }\r\n if (isInitialVal) {\r\n return array.reduce(reduceMethod, previous)\r\n }\r\n return array.reduce(reduceMethod)\r\n }\r\n if (isInitialVal) {\r\n index = 1\r\n previous = array[keyList[0]]\r\n }\r\n for (len = keyList.length; index < len; index++) {\r\n previous = callback.call(context, previous, array[keyList[index]], index, array)\r\n }\r\n return previous\r\n }\r\n}\r\n\r\nmodule.exports = reduce\r\n","/* eslint-disable valid-typeof */\r\nvar staticStrUndefined = require('./staticStrUndefined')\r\n\r\n/**\r\n * 判断是否WeakMap对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar supportWeakMap = typeof WeakMap !== staticStrUndefined\r\nfunction isWeakMap (obj) {\r\n return supportWeakMap && obj instanceof WeakMap\r\n}\r\n\r\nmodule.exports = isWeakMap\r\n","var objectToString = require('./staticObjectToString')\r\n\r\nfunction helperCreateInInObjectString (type) {\r\n return function (obj) {\r\n return '[object ' + type + ']' === objectToString.call(obj)\r\n }\r\n}\r\n\r\nmodule.exports = helperCreateInInObjectString\r\n","var setupDefaults = require('./setupDefaults')\r\n\r\nvar round = require('./round')\r\nvar ceil = require('./ceil')\r\nvar floor = require('./floor')\r\n\r\nvar isNumber = require('./isNumber')\r\nvar toValueString = require('./toValueString')\r\nvar toFixed = require('./toFixed')\r\n\r\nvar toNumberString = require('./toNumberString')\r\nvar assign = require('./assign')\r\n\r\n/**\r\n * 千分位分隔符、小数点\r\n *\r\n * @param {String/Number} num 数值\r\n * @param {CommafyOptions} options 参数\r\n * @return {String}\r\n */\r\nfunction commafy(num, options) {\r\n var opts = assign({}, setupDefaults.commafyOptions, options)\r\n var optDigits = opts.digits\r\n var isNum = isNumber(num)\r\n var rest, result, isNegative, intStr, floatStr\r\n if (isNum) {\r\n rest = (opts.ceil ? ceil : (opts.floor ? floor : round))(num, optDigits)\r\n result = toNumberString(optDigits ? toFixed(rest, optDigits) : rest).split('.')\r\n intStr = result[0]\r\n floatStr = result[1]\r\n isNegative = intStr && rest < 0\r\n if (isNegative) {\r\n intStr = intStr.substring(1, intStr.length)\r\n }\r\n } else {\r\n rest = toValueString(num).replace(/,/g, '')\r\n result = rest ? [rest] : []\r\n intStr = result[0]\r\n }\r\n if (result.length) {\r\n return (isNegative ? '-' : '') + intStr.replace(new RegExp('(?=(?!(\\\\b))(.{' + (opts.spaceNumber || 3) + '})+$)', 'g'), (opts.separator || ',')) + (floatStr ? ('.' + floatStr) : '')\r\n }\r\n return rest\r\n}\r\n\r\nmodule.exports = commafy\r\n","var helperCreateToNumber = require('./helperCreateToNumber')\r\n\r\n/**\r\n * 转数值\r\n * @param { String/Number } str 数值\r\n *\r\n * @return {Number}\r\n */\r\nvar toNumber = helperCreateToNumber(parseFloat)\r\n\r\nmodule.exports = toNumber\r\n","var staticLocation = require('./staticLocation')\r\n\r\nfunction helperGetLocatOrigin () {\r\n return staticLocation ? (staticLocation.origin || (staticLocation.protocol + '//' + staticLocation.host)) : ''\r\n}\r\n\r\nmodule.exports = helperGetLocatOrigin\r\n","var isArray = require('./isArray')\r\nvar isString = require('./isString')\r\nvar each = require('./each')\r\n\r\n/**\r\n * 返回对象的长度\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Number}\r\n */\r\nfunction getSize (obj) {\r\n var len = 0\r\n if (isString(obj) || isArray(obj)) {\r\n return obj.length\r\n }\r\n each(obj, function () {\r\n len++\r\n })\r\n return len\r\n}\r\n\r\nmodule.exports = getSize\r\n","var helperCreateGetObjects = require('./helperCreateGetObjects')\r\n\r\n/**\r\n * 获取对象所有值\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @return {Array}\r\n */\r\nvar values = helperCreateGetObjects('values', 0)\r\n\r\nmodule.exports = values\r\n","var helperCreateInTypeof = require('./helperCreateInTypeof')\r\n\r\n/**\r\n * 判断是否Number对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar isNumber = helperCreateInTypeof('number')\r\n\r\nmodule.exports = isNumber\r\n","var groupBy = require('./groupBy')\r\n\r\nvar objectEach = require('./objectEach')\r\n\r\n/**\r\n * 集合分组统计,返回各组中对象的数量统计\r\n *\r\n * @param {Array} obj 对象\r\n * @param {Function} iterate 回调/对象属性\r\n * @param {Object} context 上下文\r\n * @return {Object}\r\n */\r\nfunction countBy (obj, iterate, context) {\r\n var result = groupBy(obj, iterate, context || this)\r\n objectEach(result, function (item, key) {\r\n result[key] = item.length\r\n })\r\n return result\r\n}\r\n\r\nmodule.exports = countBy\r\n","var toNumber = require('./toNumber')\r\n\r\n/**\r\n * 裁剪 Arguments 或数组 array,从 start 位置开始到 end 结束,但不包括 end 本身的位置\r\n * @param {Array/Arguments} array 数组或Arguments\r\n * @param {Number} startIndex 开始索引\r\n * @param {Number} endIndex 结束索引\r\n */\r\nfunction slice (array, startIndex, endIndex) {\r\n var result = []\r\n var argsSize = arguments.length\r\n if (array) {\r\n startIndex = argsSize >= 2 ? toNumber(startIndex) : 0\r\n endIndex = argsSize >= 3 ? toNumber(endIndex) : array.length\r\n if (array.slice) {\r\n return array.slice(startIndex, endIndex)\r\n }\r\n for (; startIndex < endIndex; startIndex++) {\r\n result.push(array[startIndex])\r\n }\r\n }\r\n return result\r\n}\r\n\r\nmodule.exports = slice\r\n","var isFunction = require('./isFunction')\r\nvar isArray = require('./isArray')\r\nvar each = require('./each')\r\nvar findIndexOf = require('./findIndexOf')\r\n\r\nfunction helperCreatePickOmit (case1, case2) {\r\n return function (obj, callback) {\r\n var item, index\r\n var rest = {}\r\n var result = []\r\n var context = this\r\n var args = arguments\r\n var len = args.length\r\n if (!isFunction(callback)) {\r\n for (index = 1; index < len; index++) {\r\n item = args[index]\r\n result.push.apply(result, isArray(item) ? item : [item])\r\n }\r\n callback = 0\r\n }\r\n each(obj, function (val, key) {\r\n if ((callback ? callback.call(context, val, key, obj) : findIndexOf(result, function (name) {\r\n return name === key\r\n }) > -1) ? case1 : case2) {\r\n rest[key] = val\r\n }\r\n })\r\n return rest\r\n }\r\n}\r\n\r\nmodule.exports = helperCreatePickOmit\r\n","var staticStrUndefined = 'undefined'\r\n\r\nmodule.exports = staticStrUndefined\r\n","var staticStrFirst = require('./staticStrFirst')\r\nvar staticStrLast = require('./staticStrLast')\r\nvar staticParseInt = require('./staticParseInt')\r\n\r\nvar helperGetDateFullYear = require('./helperGetDateFullYear')\r\nvar helperGetDateMonth = require('./helperGetDateMonth')\r\nvar helperGetDateTime = require('./helperGetDateTime')\r\n\r\nvar toStringDate = require('./toStringDate')\r\nvar isValidDate = require('./isValidDate')\r\n\r\n/**\r\n * 返回前几天或后几天的日期\r\n *\r\n * @param {Date} date 日期或数字\r\n * @param {Number} offset 天(默认当天)、前几天、后几天\r\n * @param {String} mode 获取时分秒(null默认当前时分秒)、日初(first)、日末(last)\r\n * @return {Date}\r\n */\r\nfunction getWhatDay (date, offset, mode) {\r\n date = toStringDate(date)\r\n if (isValidDate(date) && !isNaN(offset)) {\r\n date.setDate(date.getDate() + staticParseInt(offset))\r\n if (mode === staticStrFirst) {\r\n return new Date(helperGetDateFullYear(date), helperGetDateMonth(date), date.getDate())\r\n } else if (mode === staticStrLast) {\r\n return new Date(helperGetDateTime(getWhatDay(date, 1, staticStrFirst)) - 1)\r\n }\r\n }\r\n return date\r\n}\r\n\r\nmodule.exports = getWhatDay\r\n","function helperGetDateTime (date) {\r\n return date.getTime()\r\n}\r\n\r\nmodule.exports = helperGetDateTime\r\n","var helperMultiply = require('./helperMultiply')\r\n\r\nvar toNumber = require('./toNumber')\r\nvar toNumberString = require('./toNumberString')\r\n\r\nfunction helperCreateMathNumber(name) {\r\n return function (num, digits) {\r\n var numRest = toNumber(num)\r\n var rest = numRest\r\n if (numRest) {\r\n digits = digits >> 0\r\n var numStr = toNumberString(numRest)\r\n var nums = numStr.split('.')\r\n var intStr = nums[0]\r\n var floatStr = nums[1] || ''\r\n var fStr = floatStr.substring(0, digits + 1)\r\n var subRest = intStr + (fStr ? ('.' + fStr) : '')\r\n if (digits >= floatStr.length) {\r\n return toNumber(subRest)\r\n }\r\n subRest = numRest\r\n if (digits > 0) {\r\n var ratio = Math.pow(10, digits)\r\n rest = Math[name](helperMultiply(subRest, ratio)) / ratio\r\n } else {\r\n rest = Math[name](subRest)\r\n }\r\n }\r\n return rest\r\n }\r\n}\r\n\r\nmodule.exports = helperCreateMathNumber\r\n","var isFunction = require('./isFunction')\r\nvar isString = require('./isString')\r\nvar isArray = require('./isArray')\r\nvar hasOwnProp = require('./hasOwnProp')\r\n\r\nfunction helperCreateiterateIndexOf (callback) {\r\n return function (obj, iterate, context) {\r\n if (obj && isFunction(iterate)) {\r\n if (isArray(obj) || isString(obj)) {\r\n return callback(obj, iterate, context)\r\n }\r\n for (var key in obj) {\r\n if (hasOwnProp(obj, key)) {\r\n if (iterate.call(context, obj[key], key, obj)) {\r\n return key\r\n }\r\n }\r\n }\r\n }\r\n return -1\r\n }\r\n}\r\n\r\nmodule.exports = helperCreateiterateIndexOf\r\n","var isNumber = require('./isNumber')\r\nvar isArray = require('./isArray')\r\nvar isString = require('./isString')\r\nvar isRegExp = require('./isRegExp')\r\nvar isDate = require('./isDate')\r\nvar isBoolean = require('./isBoolean')\r\nvar isUndefined = require('./isUndefined')\r\nvar keys = require('./keys')\r\n\r\nvar every = require('./every')\r\n\r\nfunction helperEqualCompare (val1, val2, compare, func, key, obj1, obj2) {\r\n if (val1 === val2) {\r\n return true\r\n }\r\n if (val1 && val2 && !isNumber(val1) && !isNumber(val2) && !isString(val1) && !isString(val2)) {\r\n if (isRegExp(val1)) {\r\n return compare('' + val1, '' + val2, key, obj1, obj2)\r\n } if (isDate(val1) || isBoolean(val1)) {\r\n return compare(+val1, +val2, key, obj1, obj2)\r\n } else {\r\n var result, val1Keys, val2Keys\r\n var isObj1Arr = isArray(val1)\r\n var isObj2Arr = isArray(val2)\r\n if (isObj1Arr || isObj2Arr ? isObj1Arr && isObj2Arr : val1.constructor === val2.constructor) {\r\n val1Keys = keys(val1)\r\n val2Keys = keys(val2)\r\n if (func) {\r\n result = func(val1, val2, key)\r\n }\r\n if (val1Keys.length === val2Keys.length) {\r\n return isUndefined(result) ? every(val1Keys, function (key, index) {\r\n return key === val2Keys[index] && helperEqualCompare(val1[key], val2[val2Keys[index]], compare, func, isObj1Arr || isObj2Arr ? index : key, val1, val2)\r\n }) : !!result\r\n }\r\n return false\r\n }\r\n }\r\n }\r\n return compare(val1, val2, key, obj1, obj2)\r\n}\r\n\r\nmodule.exports = helperEqualCompare\r\n","var map = require('./map')\r\n\r\nvar isArray = require('./isArray')\r\n\r\nfunction deepGetObj (obj, path) {\r\n var index = 0\r\n var len = path.length\r\n while (obj && index < len) {\r\n obj = obj[path[index++]]\r\n }\r\n return len && obj ? obj : 0\r\n}\r\n\r\n/**\r\n * 在list的每个元素上执行方法,任何传递的额外参数都会在调用方法的时候传递给它\r\n *\r\n * @param {Array} list\r\n * @param {Array/String/Function} path\r\n * @param {...Object} arguments\r\n * @return {Array}\r\n */\r\nfunction invoke (list, path) {\r\n var func\r\n var args = arguments\r\n var params = []\r\n var paths = []\r\n var index = 2\r\n var len = args.length\r\n for (; index < len; index++) {\r\n params.push(args[index])\r\n }\r\n if (isArray(path)) {\r\n len = path.length - 1\r\n for (index = 0; index < len; index++) {\r\n paths.push(path[index])\r\n }\r\n path = path[len]\r\n }\r\n return map(list, function (context) {\r\n if (paths.length) {\r\n context = deepGetObj(context, paths)\r\n }\r\n func = context[path] || path\r\n if (func && func.apply) {\r\n return func.apply(context, params)\r\n }\r\n })\r\n}\r\n\r\nmodule.exports = invoke\r\n","var setupDefaults = require('./setupDefaults')\r\n\r\nvar helperStringUpperCase = require('./helperStringUpperCase')\r\nvar helperGetDateFullYear = require('./helperGetDateFullYear')\r\nvar helperGetDateMonth = require('./helperGetDateMonth')\r\n\r\nvar toStringDate = require('./toStringDate')\r\nvar getYearWeek = require('./getYearWeek')\r\nvar getYearDay = require('./getYearDay')\r\n\r\nvar assign = require('./assign')\r\n\r\nvar isValidDate = require('./isValidDate')\r\nvar isFunction = require('./isFunction')\r\n\r\nvar padStart = require('./padStart')\r\n\r\nfunction handleCustomTemplate (date, formats, match, value) {\r\n var format = formats[match]\r\n if (format) {\r\n if (isFunction(format)) {\r\n return format(value, match, date)\r\n } else {\r\n return format[value]\r\n }\r\n }\r\n return value\r\n}\r\n\r\nvar dateFormatRE = /\\[([^\\]]+)]|y{2,4}|M{1,2}|d{1,2}|H{1,2}|h{1,2}|m{1,2}|s{1,2}|S{1,3}|Z{1,2}|W{1,2}|D{1,3}|[aAeEq]/g\r\n\r\n/**\r\n * 日期格式化为字符串,转义符号 []\r\n *\r\n * @param {Date} date 日期或数字\r\n * @param {String} format 输出日期格式(年份(yy|yyyy)、月份(M|MM自动补0)、天(d|dd自动补0)、12小时制(h|hh自动补0)、24小时制(H|HH自动补0)、分钟(m|mm自动补0)、秒(s|ss自动补0)、毫秒(S|SSS自动补0)、D当年的第几天、a/A上午下午、e/E星期几、w当年的第几周、W当月的第几周、q当年第几个季度、Z时区)\r\n * @param {Object} options {formats: {q: ['日', '一', '二', '三', '四', '五', '六'], E: function (value, match, date) {return '三'}, }} 自定义格式化模板\r\n * @return {String}\r\n */\r\nfunction toDateString (date, format, options) {\r\n if (date) {\r\n date = toStringDate(date)\r\n if (isValidDate(date)) {\r\n var result = format || setupDefaults.parseDateFormat || setupDefaults.formatString\r\n var hours = date.getHours()\r\n var apm = hours < 12 ? 'am' : 'pm'\r\n var formats = assign({}, setupDefaults.parseDateRules || setupDefaults.formatStringMatchs, options ? options.formats : null)\r\n var fy = function (match, length) {\r\n return ('' + helperGetDateFullYear(date)).substr(4 - length)\r\n }\r\n var fM = function (match, length) {\r\n return padStart(helperGetDateMonth(date) + 1, length, '0')\r\n }\r\n var fd = function (match, length) {\r\n return padStart(date.getDate(), length, '0')\r\n }\r\n var fH = function (match, length) {\r\n return padStart(hours, length, '0')\r\n }\r\n var fh = function (match, length) {\r\n return padStart(hours <= 12 ? hours : hours - 12, length, '0')\r\n }\r\n var fm = function (match, length) {\r\n return padStart(date.getMinutes(), length, '0')\r\n }\r\n var fs = function (match, length) {\r\n return padStart(date.getSeconds(), length, '0')\r\n }\r\n var fS = function (match, length) {\r\n return padStart(date.getMilliseconds(), length, '0')\r\n }\r\n var fZ = function (match, length) {\r\n var zoneHours = date.getTimezoneOffset() / 60 * -1\r\n return handleCustomTemplate(date, formats, match, (zoneHours >= 0 ? '+' : '-') + padStart(zoneHours, 2, '0') + (length === 1 ? ':' : '') + '00')\r\n }\r\n var fW = function (match, length) {\r\n return padStart(handleCustomTemplate(date, formats, match, getYearWeek(date, (options ? options.firstDay : null) || setupDefaults.firstDayOfWeek)), length, '0')\r\n }\r\n var fD = function (match, length) {\r\n return padStart(handleCustomTemplate(date, formats, match, getYearDay(date)), length, '0')\r\n }\r\n var parseDates = {\r\n yyyy: fy,\r\n yy: fy,\r\n MM: fM,\r\n M: fM,\r\n dd: fd,\r\n d: fd,\r\n HH: fH,\r\n H: fH,\r\n hh: fh,\r\n h: fh,\r\n mm: fm,\r\n m: fm,\r\n ss: fs,\r\n s: fs,\r\n SSS: fS,\r\n S: fS,\r\n ZZ: fZ,\r\n Z: fZ,\r\n WW: fW,\r\n W: fW,\r\n DDD: fD,\r\n D: fD,\r\n a: function (match) {\r\n return handleCustomTemplate(date, formats, match, apm)\r\n },\r\n A: function (match) {\r\n return handleCustomTemplate(date, formats, match, helperStringUpperCase(apm))\r\n },\r\n e: function (match) {\r\n return handleCustomTemplate(date, formats, match, date.getDay())\r\n },\r\n E: function (match) {\r\n return handleCustomTemplate(date, formats, match, date.getDay())\r\n },\r\n q: function (match) {\r\n return handleCustomTemplate(date, formats, match, Math.floor((helperGetDateMonth(date) + 3) / 3))\r\n }\r\n }\r\n return result.replace(dateFormatRE, function (match, skip) {\r\n return skip || (parseDates[match] ? parseDates[match](match, match.length) : match)\r\n })\r\n }\r\n return 'Invalid Date'\r\n }\r\n return ''\r\n}\r\n\r\nmodule.exports = toDateString\r\n","var helperStringRepeat = require('./helperStringRepeat')\r\nvar helperNumberOffsetPoint = require('./helperNumberOffsetPoint')\r\n\r\n/**\r\n * 数值转字符串,科学计数转字符串\r\n * @param { Number } num 数值\r\n *\r\n * @return {Number}\r\n */\r\nfunction toNumberString(num) {\r\n var rest = '' + num\r\n var scienceMatchs = rest.match(/^([-+]?)((\\d+)|((\\d+)?[.](\\d+)?))e([-+]{1})([0-9]+)$/)\r\n if (scienceMatchs) {\r\n var isNegative = num < 0\r\n var absFlag = isNegative ? '-' : ''\r\n var intNumStr = scienceMatchs[3] || ''\r\n var dIntNumStr = scienceMatchs[5] || ''\r\n var dFloatNumStr = scienceMatchs[6] || ''\r\n var sciencFlag = scienceMatchs[7]\r\n var scienceNumStr = scienceMatchs[8]\r\n var floatOffsetIndex = scienceNumStr - dFloatNumStr.length\r\n var intOffsetIndex = scienceNumStr - intNumStr.length\r\n var dIntOffsetIndex = scienceNumStr - dIntNumStr.length\r\n if (sciencFlag === '+') {\r\n if (intNumStr) {\r\n return absFlag + intNumStr + helperStringRepeat('0', scienceNumStr)\r\n }\r\n if (floatOffsetIndex > 0) {\r\n return absFlag + dIntNumStr + dFloatNumStr + helperStringRepeat('0', floatOffsetIndex)\r\n }\r\n return absFlag + dIntNumStr + helperNumberOffsetPoint(dFloatNumStr, scienceNumStr)\r\n }\r\n if (intNumStr) {\r\n if (intOffsetIndex > 0) {\r\n return absFlag + '0.' + helperStringRepeat('0', Math.abs(intOffsetIndex)) + intNumStr\r\n }\r\n return absFlag + helperNumberOffsetPoint(intNumStr, intOffsetIndex)\r\n }\r\n if (dIntOffsetIndex > 0) {\r\n return absFlag + '0.' + helperStringRepeat('0', Math.abs(dIntOffsetIndex)) + dIntNumStr + dFloatNumStr\r\n }\r\n return absFlag + helperNumberOffsetPoint(dIntNumStr, dIntOffsetIndex) + dFloatNumStr\r\n }\r\n return rest\r\n}\r\n\r\nmodule.exports = toNumberString\r\n","var isNumber = require('./isNumber')\r\n\r\nfunction isNumberFinite (obj) {\r\n return isNumber(obj) && isFinite(obj)\r\n}\r\n\r\nmodule.exports = isNumberFinite\r\n","var helperCreateTreeFunc = require('./helperCreateTreeFunc')\r\n\r\nvar map = require('./map')\r\n\r\nfunction mapTreeItem (parent, obj, iterate, context, path, node, parseChildren, opts) {\r\n var paths, nodes, rest\r\n var mapChildren = opts.mapChildren || parseChildren\r\n return map(obj, function (item, index) {\r\n paths = path.concat(['' + index])\r\n nodes = node.concat([item])\r\n rest = iterate.call(context, item, index, obj, paths, parent, nodes)\r\n if (rest && item && parseChildren && item[parseChildren]) {\r\n rest[mapChildren] = mapTreeItem(item, item[parseChildren], iterate, context, paths, nodes, parseChildren, opts)\r\n }\r\n return rest\r\n })\r\n}\r\n\r\n/**\r\n * 从树结构中指定方法后的返回值组成的新数组\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, items, path, parent, nodes) 回调\r\n * @param {Object} options {children: 'children'}\r\n * @param {Object} context 上下文\r\n * @return {Object/Array}\r\n */\r\nvar mapTree = helperCreateTreeFunc(mapTreeItem)\r\n\r\nmodule.exports = mapTree\r\n","exports.nextTick = function nextTick(fn) {\n var args = Array.prototype.slice.call(arguments);\n args.shift();\n setTimeout(function () {\n fn.apply(null, args);\n }, 0);\n};\n\nexports.platform = exports.arch = \nexports.execPath = exports.title = 'browser';\nexports.pid = 1;\nexports.browser = true;\nexports.env = {};\nexports.argv = [];\n\nexports.binding = function (name) {\n\tthrow new Error('No such module. (Possibly not yet loaded)')\n};\n\n(function () {\n var cwd = '/';\n var path;\n exports.cwd = function () { return cwd };\n exports.chdir = function (dir) {\n if (!path) path = require('path');\n cwd = path.resolve(dir, cwd);\n };\n})();\n\nexports.exit = exports.kill = \nexports.umask = exports.dlopen = \nexports.uptime = exports.memoryUsage = \nexports.uvCounters = function() {};\nexports.features = {};\n","var isArray = require('./isArray')\r\nvar isNull = require('./isNull')\r\n\r\n/**\r\n * 判断是否整数\r\n *\r\n * @param {Number, String} number 数值\r\n * @return {Boolean}\r\n */\r\nvar isInteger = function (obj) {\r\n return !isNull(obj) && !isNaN(obj) && !isArray(obj) && obj % 1 === 0\r\n}\r\n\r\nmodule.exports = isInteger\r\n","function helperDeleteProperty (obj, property) {\r\n try {\r\n delete obj[property]\r\n } catch (e) {\r\n obj[property] = undefined\r\n }\r\n}\r\n\r\nmodule.exports = helperDeleteProperty\r\n","var helperNumberAdd = require('./helperNumberAdd')\r\nvar toNumber = require('./toNumber')\r\n\r\n/**\r\n * 加法运算\r\n *\r\n * @param { Number } num1 被加数\r\n * @param { Number } num2 加数\r\n * @return {Number}\r\n */\r\nfunction add (num1, num2) {\r\n return helperNumberAdd(toNumber(num1), toNumber(num2))\r\n}\r\n\r\nmodule.exports = add\r\n","var hasOwnProp = require('./hasOwnProp')\r\nvar isArray = require('./isArray')\r\n\r\nfunction helperCreateIterateHandle (prop, useArray, restIndex, matchValue, defaultValue) {\r\n return function (obj, iterate, context) {\r\n if (obj && iterate) {\r\n if (prop && obj[prop]) {\r\n return obj[prop](iterate, context)\r\n } else {\r\n if (useArray && isArray(obj)) {\r\n for (var index = 0, len = obj.length; index < len; index++) {\r\n if (!!iterate.call(context, obj[index], index, obj) === matchValue) {\r\n return [true, false, index, obj[index]][restIndex]\r\n }\r\n }\r\n } else {\r\n for (var key in obj) {\r\n if (hasOwnProp(obj, key)) {\r\n if (!!iterate.call(context, obj[key], key, obj) === matchValue) {\r\n return [true, false, key, obj[key]][restIndex]\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return defaultValue\r\n }\r\n}\r\n\r\nmodule.exports = helperCreateIterateHandle\r\n","var isArray = require('./isArray')\r\nvar includes = require('./includes')\r\n\r\n/**\r\n * 判断数组是否包含另一数组\r\n *\r\n * @param {Array} array1 数组\r\n * @param {Array} array2 被包含数组\r\n * @return {Boolean}\r\n */\r\nfunction includeArrays (array1, array2) {\r\n var len\r\n var index = 0\r\n if (isArray(array1) && isArray(array2)) {\r\n for (len = array2.length; index < len; index++) {\r\n if (!includes(array1, array2[index])) {\r\n return false\r\n }\r\n }\r\n return true\r\n }\r\n return includes(array1, array2)\r\n}\r\n\r\nmodule.exports = includeArrays\r\n","function helperNewDate () {\r\n return new Date()\r\n}\r\n\r\nmodule.exports = helperNewDate\r\n","/* eslint-disable valid-typeof */\r\nvar staticStrUndefined = require('./staticStrUndefined')\r\n\r\n/**\r\n * 判断是否Set对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar supportSet = typeof Set !== staticStrUndefined\r\nfunction isSet (obj) {\r\n return supportSet && obj instanceof Set\r\n}\r\n\r\nmodule.exports = isSet\r\n","var setupDefaults = require('./setupDefaults')\r\n\r\nvar toValueString = require('./toValueString')\r\nvar trim = require('./trim')\r\n\r\nvar get = require('./get')\r\n\r\n/**\r\n * 解析动态字符串模板\r\n * @param {atring} str 字符串模板\r\n * @param {any | any[]} args 对象\r\n * @param {any} options \r\n */\r\nfunction template (str, args, options) {\r\n return toValueString(str).replace((options || setupDefaults).tmplRE || /\\{{2}([.\\w[\\]\\s]+)\\}{2}/g, function (match, key) {\r\n return get(args, trim(key))\r\n })\r\n}\r\n\r\nmodule.exports = template\r\n","var unzip = require('./unzip')\r\n\r\n/**\r\n * 将每个数组中相应位置的值合并在一起\r\n *\r\n * @param {Array*} array 数组\r\n */\r\nfunction zip () {\r\n return unzip(arguments)\r\n}\r\n\r\nmodule.exports = zip\r\n","/**\r\n * 节流函数;当被调用 n 毫秒后才会执行,如果在这时间内又被调用则至少每隔 n 秒毫秒调用一次该函数\r\n *\r\n * @param {Function} callback 回调\r\n * @param {Number} wait 多少秒毫\r\n * @param {Object} options 参数{leading: 是否在之前执行, trailing: 是否在之后执行}\r\n * @return {Function}\r\n */\r\nfunction throttle (callback, wait, options) {\r\n var args, context\r\n var opts = options || {}\r\n var runFlag = false\r\n var timeout = 0\r\n var optLeading = 'leading' in opts ? opts.leading : true\r\n var optTrailing = 'trailing' in opts ? opts.trailing : false\r\n var runFn = function () {\r\n runFlag = true\r\n callback.apply(context, args)\r\n timeout = setTimeout(endFn, wait)\r\n }\r\n var endFn = function () {\r\n timeout = 0\r\n if (!runFlag && optTrailing === true) {\r\n runFn()\r\n }\r\n }\r\n var cancelFn = function () {\r\n var rest = timeout !== 0\r\n clearTimeout(timeout)\r\n runFlag = false\r\n timeout = 0\r\n return rest\r\n }\r\n var throttled = function () {\r\n args = arguments\r\n context = this\r\n runFlag = false\r\n if (timeout === 0) {\r\n if (optLeading === true) {\r\n runFn()\r\n } else if (optTrailing === true) {\r\n timeout = setTimeout(endFn, wait)\r\n }\r\n }\r\n }\r\n throttled.cancel = cancelFn\r\n return throttled\r\n}\r\n\r\nmodule.exports = throttle\r\n","var staticDecodeURIComponent = decodeURIComponent\r\n\r\nmodule.exports = staticDecodeURIComponent\r\n","var setupDefaults = require('./setupDefaults')\r\n\r\nvar staticWeekTime = require('./staticWeekTime')\r\n\r\nvar isNumber = require('./isNumber')\r\nvar isValidDate = require('./isValidDate')\r\nvar getWhatWeek = require('./getWhatWeek')\r\n\r\nvar helperGetDateTime = require('./helperGetDateTime')\r\n\r\nfunction helperCreateGetDateWeek (getStartDate) {\r\n return function (date, firstDay) {\r\n var viewStartDay = isNumber(firstDay) ? firstDay : setupDefaults.firstDayOfWeek\r\n var targetDate = getWhatWeek(date, 0, viewStartDay, viewStartDay)\r\n if (isValidDate(targetDate)) {\r\n var targetOffsetDate = new Date(targetDate.getFullYear(), targetDate.getMonth(), targetDate.getDate())\r\n var targerStartDate = getStartDate(targetDate)\r\n var targetFirstDay = targerStartDate.getDay()\r\n if (targetFirstDay > viewStartDay) {\r\n targerStartDate.setDate(7 - targetFirstDay + viewStartDay + 1)\r\n }\r\n if (targetFirstDay < viewStartDay) {\r\n targerStartDate.setDate(viewStartDay - targetFirstDay + 1)\r\n }\r\n return Math.floor((helperGetDateTime(targetOffsetDate) - helperGetDateTime(targerStartDate)) / staticWeekTime + 1)\r\n }\r\n return NaN\r\n }\r\n}\r\n\r\nmodule.exports = helperCreateGetDateWeek\r\n","var helperGetDateTime = require('./helperGetDateTime')\r\n\r\nvar now = require('./now')\r\nvar toStringDate = require('./toStringDate')\r\n\r\nvar isDate = require('./isDate')\r\n\r\n/**\r\n * 将日期格式化为时间戳\r\n *\r\n * @param {String/Number/Date} str 日期或数字\r\n * @param {String} format 解析日期格式\r\n * @returns Number\r\n */\r\nvar timestamp = function (str, format) {\r\n if (str) {\r\n var date = toStringDate(str, format)\r\n return isDate(date) ? helperGetDateTime(date) : date\r\n }\r\n return now()\r\n}\r\n\r\nmodule.exports = timestamp\r\n","var setupDefaults = require('./setupDefaults')\r\n\r\nvar map = require('./map')\r\nvar orderBy = require('./orderBy')\r\n\r\nvar clone = require('./clone')\r\nvar includes = require('./includes')\r\nvar each = require('./each')\r\nvar remove = require('./remove')\r\n\r\nvar assign = require('./assign')\r\n\r\nfunction strictTree (array, optChildren) {\r\n each(array, function (item) {\r\n if (item.children && !item.children.length) {\r\n remove(item, optChildren)\r\n }\r\n })\r\n}\r\n\r\n/**\r\n * 将一个带层级的数据列表转成树结构\r\n *\r\n * @param {Array} array 数组\r\n * @param {Object} options {strict: false, parentKey: 'parentId', key: 'id', children: 'children', mapChildren: 'children', data: 'data'}\r\n * @return {Array}\r\n */\r\nfunction toArrayTree (array, options) {\r\n var opts = assign({}, setupDefaults.treeOptions, options)\r\n var optStrict = opts.strict\r\n var optKey = opts.key\r\n var optParentKey = opts.parentKey\r\n var optChildren = opts.children\r\n var optMapChildren = opts.mapChildren\r\n var optSortKey = opts.sortKey\r\n var optReverse = opts.reverse\r\n var optData = opts.data\r\n var result = []\r\n var treeMap = {}\r\n var idList, id, treeData, parentId\r\n\r\n if (optSortKey) {\r\n array = orderBy(clone(array), optSortKey)\r\n if (optReverse) {\r\n array = array.reverse()\r\n }\r\n }\r\n\r\n idList = map(array, function (item) {\r\n return item[optKey]\r\n })\r\n\r\n each(array, function (item) {\r\n id = item[optKey]\r\n\r\n if (optData) {\r\n treeData = {}\r\n treeData[optData] = item\r\n } else {\r\n treeData = item\r\n }\r\n\r\n parentId = item[optParentKey]\r\n treeMap[id] = treeMap[id] || []\r\n treeMap[parentId] = treeMap[parentId] || []\r\n treeMap[parentId].push(treeData)\r\n treeData[optKey] = id\r\n treeData[optParentKey] = parentId\r\n treeData[optChildren] = treeMap[id]\r\n if (optMapChildren) {\r\n treeData[optMapChildren] = treeMap[id]\r\n }\r\n\r\n if (!optStrict || (optStrict && !parentId)) {\r\n if (!includes(idList, parentId)) {\r\n result.push(treeData)\r\n }\r\n }\r\n })\r\n\r\n if (optStrict) {\r\n strictTree(array, optChildren)\r\n }\r\n\r\n return result\r\n}\r\n\r\nmodule.exports = toArrayTree\r\n","/* eslint-disable valid-typeof */\r\nvar staticStrUndefined = require('./staticStrUndefined')\r\n\r\n/**\r\n * 判断是否FormData对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar supportFormData = typeof FormData !== staticStrUndefined\r\nfunction isFormData (obj) {\r\n return supportFormData && obj instanceof FormData\r\n}\r\n\r\nmodule.exports = isFormData\r\n","var helperCreateInInObjectString = require('./helperCreateInInObjectString')\r\n\r\n/**\r\n * 判断是否Error对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar isError = helperCreateInInObjectString('Error')\r\n\r\nmodule.exports = isError\r\n","var lastArrayEach = require('./lastArrayEach')\r\nvar keys = require('./keys')\r\n\r\nfunction lastObjectEach (obj, iterate, context) {\r\n lastArrayEach(keys(obj), function (key) {\r\n iterate.call(context, obj[key], key, obj)\r\n })\r\n}\r\n\r\nmodule.exports = lastObjectEach\r\n","var staticHGKeyRE = require('./staticHGKeyRE')\r\n\r\nvar helperGetHGSKeys = require('./helperGetHGSKeys')\r\nvar hasOwnProp = require('./hasOwnProp')\r\nvar isUndefined = require('./isUndefined')\r\nvar eqNull = require('./eqNull')\r\n\r\n/**\r\n * 获取对象的属性的值,如果值为 undefined,则返回默认值\r\n * @param {Object/Array} obj 对象\r\n * @param {String/Function} property 键、路径\r\n * @param {Object} defaultValue 默认值\r\n * @return {Object}\r\n */\r\nfunction get (obj, property, defaultValue) {\r\n if (eqNull(obj)) {\r\n return defaultValue\r\n }\r\n var result = getValueByPath(obj, property)\r\n return isUndefined(result) ? defaultValue : result\r\n}\r\n\r\nfunction getDeepProps (obj, key) {\r\n var matchs = key ? key.match(staticHGKeyRE) : ''\r\n return matchs ? (matchs[1] ? (obj[matchs[1]] ? obj[matchs[1]][matchs[2]] : undefined) : obj[matchs[2]]) : obj[key]\r\n}\r\n\r\nfunction getValueByPath (obj, property) {\r\n if (obj) {\r\n var rest, props, len\r\n var index = 0\r\n if (obj[property] || hasOwnProp(obj, property)) {\r\n return obj[property]\r\n } else {\r\n props = helperGetHGSKeys(property)\r\n len = props.length\r\n if (len) {\r\n for (rest = obj; index < len; index++) {\r\n rest = getDeepProps(rest, props[index])\r\n if (eqNull(rest)) {\r\n if (index === len - 1) {\r\n return rest\r\n }\r\n return\r\n }\r\n }\r\n }\r\n return rest\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = get\r\n","var helperCreateInTypeof = require('./helperCreateInTypeof')\r\n\r\n/**\r\n * 判断是否Boolean对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar isBoolean = helperCreateInTypeof('boolean')\r\n\r\nmodule.exports = isBoolean\r\n","/**\r\n * 判断是否为空对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nfunction isEmpty (obj) {\r\n for (var key in obj) {\r\n return false\r\n }\r\n return true\r\n}\r\n\r\nmodule.exports = isEmpty\r\n","var map = require('./map')\r\n\r\n/**\r\n * 将对象或者伪数组转为新数组\r\n *\r\n * @param {Array} list 数组\r\n * @return {Array}\r\n */\r\nfunction toArray (list) {\r\n return map(list, function (item) {\r\n return item\r\n })\r\n}\r\n\r\nmodule.exports = toArray\r\n","var staticEscapeMap = require('./staticEscapeMap')\r\n\r\nvar helperFormatEscaper = require('./helperFormatEscaper')\r\n\r\nvar each = require('./each')\r\n\r\nvar unescapeMap = {}\r\neach(staticEscapeMap, function (item, key) {\r\n unescapeMap[staticEscapeMap[key]] = key\r\n})\r\n\r\n/**\r\n * 反转escape\r\n *\r\n * @param {String} str 字符串\r\n * @return {String}\r\n */\r\nvar unescape = helperFormatEscaper(unescapeMap)\r\n\r\nmodule.exports = unescape\r\n","var helperCreateIterateHandle = require('./helperCreateIterateHandle')\r\n\r\n/**\r\n * 从左至右遍历,匹配最近的一条数据\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Object}\r\n */\r\nvar find = helperCreateIterateHandle('find', 1, 3, true)\r\n\r\nmodule.exports = find\r\n","var toValueString = require('./toValueString')\r\nvar keys = require('./keys')\r\n\r\nfunction helperFormatEscaper (dataMap) {\r\n var replaceRegexp = new RegExp('(?:' + keys(dataMap).join('|') + ')', 'g')\r\n return function (str) {\r\n return toValueString(str).replace(replaceRegexp, function (match) {\r\n return dataMap[match]\r\n })\r\n }\r\n}\r\n\r\nmodule.exports = helperFormatEscaper\r\n","var staticStrUndefined = require('./staticStrUndefined')\r\n\r\n/* eslint-disable valid-typeof */\r\nvar staticWindow = typeof window === staticStrUndefined ? 0 : window\r\n\r\nmodule.exports = staticWindow\r\n","var helperCreateMinMax = require('./helperCreateMinMax')\r\n\r\n/**\r\n * 获取最小值\r\n *\r\n * @param {Array} arr 数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @return {Number}\r\n */\r\nvar min = helperCreateMinMax(function (rest, itemVal) {\r\n return rest > itemVal\r\n})\r\n\r\nmodule.exports = min\r\n","var helperCreateGetDateWeek = require('./helperCreateGetDateWeek')\r\n\r\n/**\r\n * 返回某个年份的第几周\r\n *\r\n * @param {Date} date 日期或数字\r\n * @param {Number} firstDay 从年初的星期几为起始开始周开始算,默认星期一\r\n * @return {Number}\r\n */\r\nvar getYearWeek = helperCreateGetDateWeek(function (targetDate) {\r\n return new Date(targetDate.getFullYear(), 0, 1)\r\n})\r\n\r\nmodule.exports = getYearWeek\r\n","function helperNumberDecimal (numStr) {\r\n return (numStr.split('.')[1] || '').length\r\n}\r\n\r\nmodule.exports = helperNumberDecimal\r\n","var staticStrFirst = require('./staticStrFirst')\r\nvar staticStrLast = require('./staticStrLast')\r\n\r\nvar helperGetDateFullYear = require('./helperGetDateFullYear')\r\n\r\nvar getWhatMonth = require('./getWhatMonth')\r\nvar toStringDate = require('./toStringDate')\r\nvar isValidDate = require('./isValidDate')\r\n\r\n/**\r\n * 返回前几年或后几年的日期\r\n *\r\n * @param {Date} date 日期或数字\r\n * @param {Number} offset 年(默认当前年)、前几个年(数值)、后几个年(数值)\r\n * @param {Number/String} month 获取哪月(null默认当前年)、年初(first)、年末(last)、指定月份(0-11)\r\n * @return {Date}\r\n */\r\nfunction getWhatYear (date, offset, month) {\r\n var number\r\n date = toStringDate(date)\r\n if (isValidDate(date)) {\r\n if (offset) {\r\n number = offset && !isNaN(offset) ? offset : 0\r\n date.setFullYear(helperGetDateFullYear(date) + number)\r\n }\r\n if (month || !isNaN(month)) {\r\n if (month === staticStrFirst) {\r\n return new Date(helperGetDateFullYear(date), 0, 1)\r\n } else if (month === staticStrLast) {\r\n date.setMonth(11)\r\n return getWhatMonth(date, 0, staticStrLast)\r\n } else {\r\n date.setMonth(month)\r\n }\r\n }\r\n }\r\n return date\r\n}\r\n\r\nmodule.exports = getWhatYear\r\n","var helperCreateTreeFunc = require('./helperCreateTreeFunc')\r\n\r\nfunction findTreeItem (parent, obj, iterate, context, path, node, parseChildren, opts) {\r\n if (obj) {\r\n var item, index, len, paths, nodes, match\r\n for (index = 0, len = obj.length; index < len; index++) {\r\n item = obj[index]\r\n paths = path.concat(['' + index])\r\n nodes = node.concat([item])\r\n if (iterate.call(context, item, index, obj, paths, parent, nodes)) {\r\n return { index: index, item: item, path: paths, items: obj, parent: parent, nodes: nodes }\r\n }\r\n if (parseChildren && item) {\r\n match = findTreeItem(item, item[parseChildren], iterate, context, paths.concat([parseChildren]), nodes, parseChildren, opts)\r\n if (match) {\r\n return match\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 从树结构中查找匹配第一条数据的键、值、路径\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, items, path, parent, nodes) 回调\r\n * @param {Object} options {children: 'children'}\r\n * @param {Object} context 上下文\r\n * @return {Object} { item, index, items, path, parent, nodes }\r\n */\r\nvar findTree = helperCreateTreeFunc(findTreeItem)\r\n\r\nmodule.exports = findTree\r\n","var helperDeleteProperty = require('./helperDeleteProperty')\r\n\r\nvar isFunction = require('./isFunction')\r\nvar isArray = require('./isArray')\r\nvar each = require('./each')\r\nvar arrayEach = require('./arrayEach')\r\nvar lastEach = require('./lastEach')\r\nvar clear = require('./clear')\r\nvar eqNull = require('./eqNull')\r\n\r\nfunction pluckProperty (name) {\r\n return function (obj, key) {\r\n return key === name\r\n }\r\n}\r\n\r\n/**\r\n * 移除对象属性\r\n *\r\n * @param {Object/Array} obj 对象/数组\r\n * @param {Function/String} iterate 方法或属性\r\n * @param {Object} context 上下文\r\n * @return {Object/Array}\r\n */\r\nfunction remove (obj, iterate, context) {\r\n if (obj) {\r\n if (!eqNull(iterate)) {\r\n var removeKeys = []\r\n var rest = []\r\n if (!isFunction(iterate)) {\r\n iterate = pluckProperty(iterate)\r\n }\r\n each(obj, function (item, index, rest) {\r\n if (iterate.call(context, item, index, rest)) {\r\n removeKeys.push(index)\r\n }\r\n })\r\n if (isArray(obj)) {\r\n lastEach(removeKeys, function (item, key) {\r\n rest.push(obj[item])\r\n obj.splice(item, 1)\r\n })\r\n } else {\r\n rest = {}\r\n arrayEach(removeKeys, function (key) {\r\n rest[key] = obj[key]\r\n helperDeleteProperty(obj, key)\r\n })\r\n }\r\n return rest\r\n }\r\n return clear(obj)\r\n }\r\n return obj\r\n}\r\n\r\nmodule.exports = remove\r\n","/**\r\n * 判断是否对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nfunction isPlainObject (obj) {\r\n return obj ? obj.constructor === Object : false\r\n}\r\n\r\nmodule.exports = isPlainObject\r\n","var helperGetDateTime = require('./helperGetDateTime')\r\nvar helperGetYMD = require('./helperGetYMD')\r\n\r\nfunction helperGetYMDTime (date) {\r\n return helperGetDateTime(helperGetYMD(date))\r\n}\r\n\r\nmodule.exports = helperGetYMDTime\r\n","var slice = require('./slice')\r\n\r\n/**\r\n * 创建一个只能调用一次的函数,只会返回第一次执行后的结果\r\n *\r\n * @param {Function} callback 函数\r\n * @param {Object} context 上下文\r\n * @param {*} args 额外的参数\r\n * @return {Object}\r\n */\r\nfunction once (callback, context) {\r\n var done = false\r\n var rest = null\r\n var args = slice(arguments, 2)\r\n return function () {\r\n if (done) {\r\n return rest\r\n }\r\n rest = callback.apply(context, slice(arguments).concat(args))\r\n done = true\r\n return rest\r\n }\r\n}\r\n\r\nmodule.exports = once\r\n","function helperGetDateMonth (date) {\r\n return date.getMonth()\r\n}\r\n\r\nmodule.exports = helperGetDateMonth\r\n","var isArray = require('./isArray')\r\nvar arrayEach = require('./arrayEach')\r\n\r\nfunction flattenDeep (array, deep) {\r\n var result = []\r\n arrayEach(array, function (vals) {\r\n result = result.concat(isArray(vals) ? (deep ? flattenDeep(vals, deep) : vals) : [vals])\r\n })\r\n return result\r\n}\r\n\r\n/**\r\n * 将一个多维数组铺平\r\n * @param {Array} array 数组\r\n * @param {Boolean} deep 是否深层\r\n * @return {Array}\r\n */\r\nfunction flatten (array, deep) {\r\n if (isArray(array)) {\r\n return flattenDeep(array, deep)\r\n }\r\n return []\r\n}\r\n\r\nmodule.exports = flatten\r\n","var helperCreateGetObjects = require('./helperCreateGetObjects')\r\n\r\n/**\r\n * 获取对象所有属性\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @return {Array}\r\n */\r\nvar keys = helperCreateGetObjects('keys', 1)\r\n\r\nmodule.exports = keys\r\n","var isArray = require('./isArray')\r\nvar isPlainObject = require('./isPlainObject')\r\nvar each = require('./each')\r\n\r\nfunction handleMerge (target, source) {\r\n if ((isPlainObject(target) && isPlainObject(source)) || (isArray(target) && isArray(source))) {\r\n each(source, function (obj, key) {\r\n target[key] = handleMerge(target[key], obj)\r\n })\r\n return target\r\n }\r\n return source\r\n}\r\n\r\n/**\r\n * 将一个或多个源对象合并到目标对象中\r\n *\r\n * @param {Object} target 目标对象\r\n * @param {...Object}\r\n * @return {Boolean}\r\n */\r\n var merge = function (target) {\r\n if (!target) {\r\n target = {}\r\n }\r\n var args = arguments\r\n var len = args.length\r\n for (var source, index = 1; index < len; index++) {\r\n source = args[index]\r\n if (source) {\r\n handleMerge(target, source)\r\n }\r\n }\r\n return target\r\n}\r\n\r\nmodule.exports = merge\r\n","var arrayEach = require('./arrayEach')\r\nvar toArray = require('./toArray')\r\nvar map = require('./map')\r\n\r\nvar isArray = require('./isArray')\r\nvar isFunction = require('./isFunction')\r\nvar isPlainObject = require('./isPlainObject')\r\nvar isUndefined = require('./isUndefined')\r\nvar isNull = require('./isNull')\r\nvar eqNull = require('./eqNull')\r\nvar get = require('./get')\r\nvar property = require('./property')\r\n\r\nvar ORDER_PROP_ASC = 'asc'\r\nvar ORDER_PROP_DESC = 'desc'\r\n\r\n// function handleSort (v1, v2) {\r\n// return v1 > v2 ? 1 : -1\r\n// }\r\n\r\n// '' < 数字 < 字符 < null < undefined\r\nfunction handleSort (v1, v2) {\r\n if (isUndefined(v1)) {\r\n return 1\r\n }\r\n if (isNull(v1)) {\r\n return isUndefined(v2) ? -1 : 1\r\n }\r\n return v1 && v1.localeCompare ? v1.localeCompare(v2) : (v1 > v2 ? 1 : -1)\r\n}\r\n\r\nfunction buildMultiOrders (name, confs, compares) {\r\n return function (item1, item2) {\r\n var v1 = item1[name]\r\n var v2 = item2[name]\r\n if (v1 === v2) {\r\n return compares ? compares(item1, item2) : 0\r\n }\r\n return confs.order === ORDER_PROP_DESC ? handleSort(v2, v1) : handleSort(v1, v2)\r\n }\r\n}\r\n\r\nfunction getSortConfs (arr, list, fieldConfs, context) {\r\n var sortConfs = []\r\n fieldConfs = isArray(fieldConfs) ? fieldConfs : [fieldConfs]\r\n arrayEach(fieldConfs, function (handle, index) {\r\n if (handle) {\r\n var field = handle\r\n var order\r\n if (isArray(handle)) {\r\n field = handle[0]\r\n order = handle[1]\r\n } else if (isPlainObject(handle)) {\r\n field = handle.field\r\n order = handle.order\r\n }\r\n sortConfs.push({\r\n field: field,\r\n order: order || ORDER_PROP_ASC\r\n })\r\n arrayEach(list, isFunction(field) ? function (item, key) {\r\n item[index] = field.call(context, item.data, key, arr)\r\n } : function (item) {\r\n item[index] = field ? get(item.data, field) : item.data\r\n })\r\n }\r\n })\r\n return sortConfs\r\n}\r\n\r\n/**\r\n * 将数组进行排序\r\n *\r\n * @param {Array} arr 数组\r\n * @param {Function/String/Array} fieldConfs 方法或属性\r\n * @param {Object} context 上下文\r\n * @return {Array}\r\n */\r\nfunction orderBy (arr, fieldConfs, context) {\r\n if (arr) {\r\n if (eqNull(fieldConfs)) {\r\n return toArray(arr).sort(handleSort)\r\n }\r\n var compares\r\n var list = map(arr, function (item) {\r\n return { data: item }\r\n })\r\n var sortConfs = getSortConfs(arr, list, fieldConfs, context)\r\n var len = sortConfs.length - 1\r\n while (len >= 0) {\r\n compares = buildMultiOrders(len, sortConfs[len], compares)\r\n len--\r\n }\r\n if (compares) {\r\n list = list.sort(compares)\r\n }\r\n return map(list, property('data'))\r\n }\r\n return []\r\n}\r\n\r\nmodule.exports = orderBy\r\n","var staticLocation = require('./staticLocation')\r\n\r\nvar parseUrl = require('./parseUrl')\r\n\r\n/**\r\n * 获取地址栏信息\r\n *\r\n * @return Object\r\n */\r\nfunction locat () {\r\n return staticLocation ? parseUrl(staticLocation.href) : {}\r\n}\r\n\r\nmodule.exports = locat\r\n","var isArray = require('./isArray')\r\nvar values = require('./values')\r\n\r\n/**\r\n * 从右至左遍历,匹配最近的一条数据\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Object}\r\n */\r\nfunction findLast (obj, iterate, context) {\r\n if (obj) {\r\n if (!isArray(obj)) {\r\n obj = values(obj)\r\n }\r\n for (var len = obj.length - 1; len >= 0; len--) {\r\n if (iterate.call(context, obj[len], len, obj)) {\r\n return obj[len]\r\n }\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = findLast\r\n","var helperCreateInInObjectString = require('./helperCreateInInObjectString')\r\n\r\n/**\r\n * 判断是否Date对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar isDate = helperCreateInInObjectString('Date')\r\n\r\nmodule.exports = isDate\r\n","var keys = require('./keys')\r\nvar findIndexOf = require('./findIndexOf')\r\nvar isEqual = require('./isEqual')\r\n\r\nvar some = require('./some')\r\nvar includeArrays = require('./includeArrays')\r\n\r\n/**\r\n * 判断属性中的键和值是否包含在对象中\r\n *\r\n * @param {Object/Array} obj 对象\r\n * @param {Object} source 值\r\n * @return {Boolean}\r\n */\r\nfunction isMatch (obj, source) {\r\n var objKeys = keys(obj)\r\n var sourceKeys = keys(source)\r\n if (sourceKeys.length) {\r\n if (includeArrays(objKeys, sourceKeys)) {\r\n return some(sourceKeys, function (key2) {\r\n return findIndexOf(objKeys, function (key1) {\r\n return key1 === key2 && isEqual(obj[key1], source[key2])\r\n }) > -1\r\n })\r\n }\r\n } else {\r\n return true\r\n }\r\n return isEqual(obj, source)\r\n}\r\n\r\nmodule.exports = isMatch\r\n","var isPlainObject = require('./isPlainObject')\r\nvar isString = require('./isString')\r\n\r\n/**\r\n * 字符串转JSON\r\n *\r\n * @param {String} str 字符串\r\n * @return {Object} 返回转换后对象\r\n */\r\nfunction toStringJSON (str) {\r\n if (isPlainObject(str)) {\r\n return str\r\n } else if (isString(str)) {\r\n try {\r\n return JSON.parse(str)\r\n } catch (e) {}\r\n }\r\n return {}\r\n}\r\n\r\nmodule.exports = toStringJSON\r\n","var helperCreateGetObjects = require('./helperCreateGetObjects')\r\n\r\n/**\r\n * 获取对象所有属性、值\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @return {Array}\r\n */\r\nvar entries = helperCreateGetObjects('entries', 2)\r\n\r\nmodule.exports = entries\r\n","var helperCreateTreeFunc = require('./helperCreateTreeFunc')\r\n\r\nvar arrayEach = require('./arrayEach')\r\n\r\nvar assign = require('./assign')\r\n\r\nfunction searchTreeItem (parentAllow, parent, obj, iterate, context, path, node, parseChildren, opts) {\r\n var paths, nodes, rest, isAllow, hasChild\r\n var rests = []\r\n var hasOriginal = opts.original\r\n var sourceData = opts.data\r\n var mapChildren = opts.mapChildren || parseChildren\r\n arrayEach(obj, function (item, index) {\r\n paths = path.concat(['' + index])\r\n nodes = node.concat([item])\r\n isAllow = parentAllow || iterate.call(context, item, index, obj, paths, parent, nodes)\r\n hasChild = parseChildren && item[parseChildren]\r\n if (isAllow || hasChild) {\r\n if (hasOriginal) {\r\n rest = item\r\n } else {\r\n rest = assign({}, item)\r\n if (sourceData) {\r\n rest[sourceData] = item\r\n }\r\n }\r\n rest[mapChildren] = searchTreeItem(isAllow, item, item[parseChildren], iterate, context, paths, nodes, parseChildren, opts)\r\n if (isAllow || rest[mapChildren].length) {\r\n rests.push(rest)\r\n }\r\n } else if (isAllow) {\r\n rests.push(rest)\r\n }\r\n })\r\n return rests\r\n}\r\n\r\n/**\r\n * 从树结构中根据回调查找数据\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, items, path, parent, nodes) 回调\r\n * @param {Object} options {children: 'children'}\r\n * @param {Object} context 上下文\r\n * @return {Array}\r\n */\r\nvar searchTree = helperCreateTreeFunc(function (parent, obj, iterate, context, path, nodes, parseChildren, opts) {\r\n return searchTreeItem(0, parent, obj, iterate, context, path, nodes, parseChildren, opts)\r\n})\r\n\r\nmodule.exports = searchTree\r\n","var staticWindow = require('./staticWindow')\r\n\r\n/**\r\n * 判断是否Window对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nfunction isWindow (obj) {\r\n return staticWindow && !!(obj && obj === obj.window)\r\n}\r\n\r\nmodule.exports = isWindow\r\n","var helperMultiply = require('./helperMultiply')\r\n\r\nvar toNumber = require('./toNumber')\r\n\r\n/**\r\n * 乘法运算\r\n *\r\n * @param { Number } num1 数值1\r\n * @param { Number } num2 数值2\r\n * @return {Number}\r\n */\r\nfunction multiply (num1, num2) {\r\n var multiplier = toNumber(num1)\r\n var multiplicand = toNumber(num2)\r\n return helperMultiply(multiplier, multiplicand)\r\n}\r\n\r\nmodule.exports = multiply\r\n","var staticStrUndefined = require('./staticStrUndefined')\r\n\r\nvar helperCreateInTypeof = require('./helperCreateInTypeof')\r\n\r\n/**\r\n * 判断是否Undefined\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar isUndefined = helperCreateInTypeof(staticStrUndefined)\r\n\r\nmodule.exports = isUndefined\r\n","function lastArrayEach (obj, iterate, context) {\r\n for (var len = obj.length - 1; len >= 0; len--) {\r\n iterate.call(context, obj[len], len, obj)\r\n }\r\n}\r\n\r\nmodule.exports = lastArrayEach\r\n","var map = require('./map')\r\nvar property = require('./property')\r\n\r\n/**\r\n * 获取数组对象中某属性值,返回一个数组\r\n *\r\n * @param {Array} array 数组\r\n * @param {String} key 属性值\r\n * @return {Array}\r\n */\r\nfunction pluck (obj, key) {\r\n return map(obj, property(key))\r\n}\r\n\r\nmodule.exports = pluck\r\n","var staticDocument = require('./staticDocument')\r\n\r\n/**\r\n * 判断是否Document对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nfunction isDocument (obj) {\r\n return !!(obj && staticDocument && obj.nodeType === 9)\r\n}\r\n\r\nmodule.exports = isDocument\r\n","var helperNumberDecimal = require('./helperNumberDecimal')\r\nvar toNumberString = require('./toNumberString')\r\nvar multiply = require('./multiply')\r\n\r\nfunction helperNumberDivide (divisor, dividend) {\r\n var str1 = toNumberString(divisor)\r\n var str2 = toNumberString(dividend)\r\n var divisorDecimal = helperNumberDecimal(str1)\r\n var dividendDecimal = helperNumberDecimal(str2)\r\n var powY = dividendDecimal - divisorDecimal\r\n var isMinus = powY < 0\r\n var multiplicand = Math.pow(10, isMinus ? Math.abs(powY) : powY)\r\n return multiply(str1.replace('.', '') / str2.replace('.', ''), isMinus ? 1 / multiplicand : multiplicand)\r\n}\r\n\r\nmodule.exports = helperNumberDivide\r\n","var isString = require('./isString')\r\nvar isNumber = require('./isNumber')\r\n\r\n/**\r\n * 判断是否Element对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nfunction isElement (obj) {\r\n return !!(obj && isString(obj.nodeName) && isNumber(obj.nodeType))\r\n}\r\n\r\nmodule.exports = isElement\r\n","var toValueString = require('./toValueString')\r\n\r\n/**\r\n * 去除字符串右边的空格\r\n *\r\n * @param {String} str 字符串\r\n * @return {String}\r\n */\r\nfunction trimRight (str) {\r\n return str && str.trimRight ? str.trimRight() : toValueString(str).replace(/[\\s\\uFEFF\\xA0]+$/g, '')\r\n}\r\n\r\nmodule.exports = trimRight\r\n","var staticEncodeURIComponent = encodeURIComponent\r\n\r\nmodule.exports = staticEncodeURIComponent\r\n","var helperCreateTreeFunc = require('./helperCreateTreeFunc')\r\nvar each = require('./each')\r\n\r\nfunction eachTreeItem (parent, obj, iterate, context, path, node, parseChildren, opts) {\r\n var paths, nodes\r\n each(obj, function (item, index) {\r\n paths = path.concat(['' + index])\r\n nodes = node.concat([item])\r\n iterate.call(context, item, index, obj, paths, parent, nodes)\r\n if (item && parseChildren) {\r\n paths.push(parseChildren)\r\n eachTreeItem(item, item[parseChildren], iterate, context, paths, nodes, parseChildren, opts)\r\n }\r\n })\r\n}\r\n\r\n/**\r\n * 从树结构中遍历数据的键、值、路径\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, items, path, parent, nodes) 回调\r\n * @param {Object} options {children: 'children', mapChildren: 'children}\r\n * @param {Object} context 上下文\r\n */\r\nvar eachTree = helperCreateTreeFunc(eachTreeItem)\r\n\r\nmodule.exports = eachTree\r\n","var values = require('./values')\r\nvar each = require('./each')\r\n\r\n/**\r\n * 根据键数组、值数组对转换为对象\r\n *\r\n * @param {Array} props 键数组\r\n * @param {Number} arr 值数组\r\n * @return {Object}\r\n */\r\nfunction zipObject (props, arr) {\r\n var result = {}\r\n arr = arr || []\r\n each(values(props), function (val, key) {\r\n result[val] = arr[key]\r\n })\r\n return result\r\n}\r\n\r\nmodule.exports = zipObject\r\n","var helperGetDateFullYear = require('./helperGetDateFullYear')\r\nvar helperGetDateMonth = require('./helperGetDateMonth')\r\n\r\nfunction helperGetYMD (date) {\r\n return new Date(helperGetDateFullYear(date), helperGetDateMonth(date), date.getDate())\r\n}\r\n\r\nmodule.exports = helperGetYMD\r\n","var helperNumberDecimal = require('./helperNumberDecimal')\r\nvar toNumberString = require('./toNumberString')\r\n\r\nfunction helperMultiply (multiplier, multiplicand) {\r\n var str1 = toNumberString(multiplier)\r\n var str2 = toNumberString(multiplicand)\r\n return parseInt(str1.replace('.', '')) * parseInt(str2.replace('.', '')) / Math.pow(10, helperNumberDecimal(str1) + helperNumberDecimal(str2))\r\n}\r\n\r\nmodule.exports = helperMultiply\r\n","var values = require('./values')\r\n\r\n/**\r\n * 获取对象最后一个值\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @return {Object}\r\n */\r\nfunction last (obj) {\r\n var list = values(obj)\r\n return list[list.length - 1]\r\n}\r\n\r\nmodule.exports = last\r\n","var isArray = require('./isArray')\r\nvar hasOwnProp = require('./hasOwnProp')\r\n\r\n/**\r\n * 已废弃,被 some, every 替换\r\n * @deprecated\r\n */\r\nfunction forOf (obj, iterate, context) {\r\n if (obj) {\r\n if (isArray(obj)) {\r\n for (var index = 0, len = obj.length; index < len; index++) {\r\n if (iterate.call(context, obj[index], index, obj) === false) {\r\n break\r\n }\r\n }\r\n } else {\r\n for (var key in obj) {\r\n if (hasOwnProp(obj, key)) {\r\n if (iterate.call(context, obj[key], key, obj) === false) {\r\n break\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = forOf\r\n","var staticEscapeMap = {\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n '\"': '"',\r\n \"'\": ''',\r\n '`': '`'\r\n}\r\n\r\nmodule.exports = staticEscapeMap\r\n","function helperStringLowerCase (str) {\r\n return str.toLowerCase()\r\n}\r\n\r\nmodule.exports = helperStringLowerCase\r\n","var isNull = require('./isNull')\r\nvar isUndefined = require('./isUndefined')\r\n\r\n/**\r\n * 判断是否 undefined 和 null\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nfunction eqNull (obj) {\r\n return isNull(obj) || isUndefined(obj)\r\n}\r\n\r\nmodule.exports = eqNull\r\n","function arrayLastIndexOf (list, val) {\r\n if (list.lastIndexOf) {\r\n return list.lastIndexOf(val)\r\n }\r\n for (var len = list.length - 1; len >= 0; len--) {\r\n if (val === list[len]) {\r\n return len\r\n }\r\n }\r\n return -1\r\n}\r\n\r\nmodule.exports = arrayLastIndexOf\r\n","function helperGetDateFullYear (date) {\r\n return date.getFullYear()\r\n}\r\n\r\nmodule.exports = helperGetDateFullYear\r\n","var helperNumberDecimal = require('./helperNumberDecimal')\r\nvar toNumberString = require('./toNumberString')\r\nvar toNumber = require('./toNumber')\r\nvar toFixed = require('./toFixed')\r\n\r\n/**\r\n * 减法运算\r\n *\r\n * @param { Number } num1 被减数\r\n * @param { Number } num2 减数\r\n * @return {Number}\r\n */\r\nfunction subtract (num1, num2) {\r\n var subtrahend = toNumber(num1)\r\n var minuend = toNumber(num2)\r\n var str1 = toNumberString(subtrahend)\r\n var str2 = toNumberString(minuend)\r\n var digit1 = helperNumberDecimal(str1)\r\n var digit2 = helperNumberDecimal(str2)\r\n var ratio = Math.pow(10, Math.max(digit1, digit2))\r\n var precision = (digit1 >= digit2) ? digit1 : digit2\r\n return parseFloat(toFixed((subtrahend * ratio - minuend * ratio) / ratio, precision))\r\n}\r\n\r\nmodule.exports = subtract\r\n","var helperEqualCompare = require('./helperEqualCompare')\r\nvar helperDefaultCompare = require('./helperDefaultCompare')\r\n\r\nvar isFunction = require('./isFunction')\r\nvar isUndefined = require('./isUndefined')\r\n\r\n/**\r\n * 深度比较两个对象之间的值是否相等,使用自定义比较函数\r\n *\r\n * @param {Object} obj1 值1\r\n * @param {Object} obj2 值2\r\n * @param {Function} func 自定义函数\r\n * @return {Boolean}\r\n */\r\nfunction isEqualWith (obj1, obj2, func) {\r\n if (isFunction(func)) {\r\n return helperEqualCompare(obj1, obj2, function (v1, v2, key, obj1, obj2) {\r\n var result = func(v1, v2, key, obj1, obj2)\r\n return isUndefined(result) ? helperDefaultCompare(v1, v2) : !!result\r\n }, func)\r\n }\r\n return helperEqualCompare(obj1, obj2, helperDefaultCompare)\r\n}\r\n\r\nmodule.exports = isEqualWith\r\n","var isArray = require('./isArray')\r\nvar arrayEach = require('./arrayEach')\r\nvar objectEach = require('./objectEach')\r\n\r\n/**\r\n * 迭代器\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Object}\r\n */\r\nfunction each (obj, iterate, context) {\r\n if (obj) {\r\n return (isArray(obj) ? arrayEach : objectEach)(obj, iterate, context)\r\n }\r\n return obj\r\n}\r\n\r\nmodule.exports = each\r\n","var helperNumberDivide = require('./helperNumberDivide')\r\nvar toNumber = require('./toNumber')\r\n\r\n/**\r\n * 除法运算\r\n *\r\n * @param { Number } num1 数值1\r\n * @param { Number } num2 数值2\r\n * @return {Number}\r\n */\r\nfunction divide (num1, num2) {\r\n return helperNumberDivide(toNumber(num1), toNumber(num2))\r\n}\r\n\r\nmodule.exports = divide\r\n","var helperCreateiterateIndexOf = require('./helperCreateiterateIndexOf')\r\n\r\n/**\r\n * 从最后开始的索引值,返回对象第一个索引值\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Object}\r\n */\r\nvar findLastIndexOf = helperCreateiterateIndexOf(function (obj, iterate, context) {\r\n for (var len = obj.length - 1; len >= 0; len--) {\r\n if (iterate.call(context, obj[len], len, obj)) {\r\n return len\r\n }\r\n }\r\n return -1\r\n})\r\n\r\nmodule.exports = findLastIndexOf\r\n","function helperGetHGSKeys (property) {\r\n // 以最快的方式判断数组,可忽略准确性\r\n return property ? (property.splice && property.join ? property : ('' + property).replace(/(\\[\\d+\\])\\.?/g,'$1.').replace(/\\.$/, '').split('.')) : []\r\n}\r\n\r\nmodule.exports = helperGetHGSKeys\r\n","/**\r\n * 判断对象自身属性中是否具有指定的属性\r\n *\r\n * @param {Object} obj 对象\r\n * @param {String/Number} key 键值\r\n * @return {Boolean}\r\n */\r\nfunction hasOwnProp (obj, key) {\r\n return obj && obj.hasOwnProperty ? obj.hasOwnProperty(key) : false\r\n}\r\n\r\nmodule.exports = hasOwnProp\r\n","var toValueString = require('./toValueString')\r\n\r\nvar isUndefined = require('./isUndefined')\r\n\r\nvar helperStringRepeat = require('./helperStringRepeat')\r\n\r\n/**\r\n * 用指定字符从前面开始补全字符串\r\n *\r\n * @param {String} str 字符串\r\n * @param {Number} targetLength 结果长度\r\n * @param {Number} padString 补全字符\r\n * @return {String}\r\n */\r\nfunction padStart (str, targetLength, padString) {\r\n var rest = toValueString(str)\r\n targetLength = targetLength >> 0\r\n padString = isUndefined(padString) ? ' ' : '' + padString\r\n if (rest.padStart) {\r\n return rest.padStart(targetLength, padString)\r\n }\r\n if (targetLength > rest.length) {\r\n targetLength -= rest.length\r\n if (targetLength > padString.length) {\r\n padString += helperStringRepeat(padString, targetLength / padString.length)\r\n }\r\n return padString.slice(0, targetLength) + rest\r\n }\r\n return rest\r\n}\r\n\r\nmodule.exports = padStart\r\n","var helperCreateGetDateWeek = require('./helperCreateGetDateWeek')\r\n\r\n/**\r\n * 返回某个月的第几周\r\n *\r\n * @param {Date} date 日期或数字\r\n * @param {Number} firstDay 周视图的起始天,默认星期一\r\n * @return {Number}\r\n */\r\nvar getMonthWeek = helperCreateGetDateWeek(function (targetDate) {\r\n return new Date(targetDate.getFullYear(), targetDate.getMonth(), 1)\r\n})\r\n\r\nmodule.exports = getMonthWeek\r\n","function arrayIndexOf (list, val) {\r\n if (list.indexOf) {\r\n return list.indexOf(val)\r\n }\r\n for (var index = 0, len = list.length; index < len; index++) {\r\n if (val === list[index]) {\r\n return index\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = arrayIndexOf\r\n","var helperCreateInInObjectString = require('./helperCreateInInObjectString')\r\n\r\n/**\r\n * 判断是否数组\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar isArray = Array.isArray || helperCreateInInObjectString('Array')\r\n\r\nmodule.exports = isArray\r\n","function helperStringSubstring (str, start, end) {\r\n return str.substring(start, end)\r\n}\r\n\r\nmodule.exports = helperStringSubstring\r\n","var helperCreateMathNumber = require('./helperCreateMathNumber')\r\n\r\n/**\r\n * 将数值向下舍入\r\n *\r\n * @param {string|number} num 数值\r\n * @param {number} digits 小数保留位数\r\n * @return {number}\r\n */\r\nvar floor = helperCreateMathNumber('floor')\r\n\r\nmodule.exports = floor\r\n","var isArray = require('./isArray')\r\nvar isString = require('./isString')\r\nvar hasOwnProp = require('./hasOwnProp')\r\n\r\nfunction helperCreateIndexOf (name, callback) {\r\n return function (obj, val) {\r\n if (obj) {\r\n if (obj[name]) {\r\n return obj[name](val)\r\n }\r\n if (isString(obj) || isArray(obj)) {\r\n return callback(obj, val)\r\n }\r\n for (var key in obj) {\r\n if (hasOwnProp(obj, key)) {\r\n if (val === obj[key]) {\r\n return key\r\n }\r\n }\r\n }\r\n }\r\n return -1\r\n }\r\n}\r\n\r\nmodule.exports = helperCreateIndexOf\r\n","var staticLocation = require('./staticLocation')\r\n\r\nvar unserialize = require('./unserialize')\r\n\r\nvar helperGetLocatOrigin = require('./helperGetLocatOrigin')\r\n\r\nfunction parseURLQuery (uri) {\r\n return unserialize(uri.split('?')[1] || '')\r\n}\r\n\r\nfunction parseUrl (url) {\r\n var hashs, portText, searchs, parsed\r\n var href = '' + url\r\n if (href.indexOf('//') === 0) {\r\n href = (staticLocation ? staticLocation.protocol : '') + href\r\n } else if (href.indexOf('/') === 0) {\r\n href = helperGetLocatOrigin() + href\r\n }\r\n searchs = href.replace(/#.*/, '').match(/(\\?.*)/)\r\n parsed = {\r\n href: href,\r\n hash: '',\r\n host: '',\r\n hostname: '',\r\n protocol: '',\r\n port: '',\r\n search: searchs && searchs[1] && searchs[1].length > 1 ? searchs[1] : ''\r\n }\r\n parsed.path = href.replace(/^([a-z0-9.+-]*:)\\/\\//, function (text, protocol) {\r\n parsed.protocol = protocol\r\n return ''\r\n }).replace(/^([a-z0-9.+-]*)(:\\d+)?\\/?/, function (text, hostname, port) {\r\n portText = port || ''\r\n parsed.port = portText.replace(':', '')\r\n parsed.hostname = hostname\r\n parsed.host = hostname + portText\r\n return '/'\r\n }).replace(/(#.*)/, function (text, hash) {\r\n parsed.hash = hash.length > 1 ? hash : ''\r\n return ''\r\n })\r\n hashs = parsed.hash.match(/#((.*)\\?|(.*))/)\r\n parsed.pathname = parsed.path.replace(/(\\?|#.*).*/, '')\r\n parsed.origin = parsed.protocol + '//' + parsed.host\r\n parsed.hashKey = hashs ? (hashs[2] || hashs[1] || '') : ''\r\n parsed.hashQuery = parseURLQuery(parsed.hash)\r\n parsed.searchQuery = parseURLQuery(parsed.search)\r\n return parsed\r\n}\r\n\r\nmodule.exports = parseUrl\r\n","var helperGetDateTime = require('./helperGetDateTime')\r\nvar helperNewDate = require('./helperNewDate')\r\n\r\n/**\r\n * 返回当前时间戳\r\n *\r\n * @returns Number\r\n */\r\nvar now = Date.now || function () {\r\n return helperGetDateTime(helperNewDate())\r\n}\r\n\r\nmodule.exports = now\r\n","/**\r\n * 获取一个全局唯一标识\r\n *\r\n * @param {String} prefix 前缀\r\n * @return {Number}\r\n */\r\nvar __uniqueId = 0\r\nfunction uniqueId (prefix) {\r\n return [prefix, ++__uniqueId].join('')\r\n}\r\n\r\nmodule.exports = uniqueId\r\n","/* eslint-disable valid-typeof */\r\nvar staticStrUndefined = require('./staticStrUndefined')\r\n\r\n/**\r\n * 判断是否Map对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar supportMap = typeof Map !== staticStrUndefined\r\nfunction isMap (obj) {\r\n return supportMap && obj instanceof Map\r\n}\r\n\r\nmodule.exports = isMap\r\n","var keys = require('./keys')\r\n\r\nvar slice = require('./slice')\r\nvar includes = require('./includes')\r\nvar arrayEach = require('./arrayEach')\r\n\r\nvar assign = require('./assign')\r\n\r\n/**\r\n * 将一个或者多个对象值解构到目标对象\r\n *\r\n * @param {Object} destination 目标对象\r\n * @param {...Object}\r\n * @return {Boolean}\r\n */\r\nfunction destructuring (destination, sources) {\r\n if (destination && sources) {\r\n var rest = assign.apply(this, [{}].concat(slice(arguments, 1)))\r\n var restKeys = keys(rest)\r\n arrayEach(keys(destination), function (key) {\r\n if (includes(restKeys, key)) {\r\n destination[key] = rest[key]\r\n }\r\n })\r\n }\r\n return destination\r\n}\r\n\r\nmodule.exports = destructuring\r\n","var staticStrUndefined = require('./staticStrUndefined')\r\nvar staticDocument = require('./staticDocument')\r\nvar staticWindow = require('./staticWindow')\r\n\r\nvar assign = require('./assign')\r\nvar arrayEach = require('./arrayEach')\r\n\r\n/* eslint-disable valid-typeof */\r\nfunction isBrowseStorage (storage) {\r\n try {\r\n var testKey = '__xe_t'\r\n storage.setItem(testKey, 1)\r\n storage.removeItem(testKey)\r\n return true\r\n } catch (e) {\r\n return false\r\n }\r\n}\r\n\r\nfunction isBrowseType (type) {\r\n return navigator.userAgent.indexOf(type) > -1\r\n}\r\n\r\n/**\r\n * 获取浏览器内核\r\n * @return Object\r\n */\r\nfunction browse () {\r\n var $body, isChrome, isEdge\r\n var isMobile = false\r\n var result = {\r\n isNode: false,\r\n isMobile: isMobile,\r\n isPC: false,\r\n isDoc: !!staticDocument\r\n }\r\n if (!staticWindow && typeof process !== staticStrUndefined) {\r\n result.isNode = true\r\n } else {\r\n isEdge = isBrowseType('Edge')\r\n isChrome = isBrowseType('Chrome')\r\n isMobile = /(Android|webOS|iPhone|iPad|iPod|SymbianOS|BlackBerry|Windows Phone)/.test(navigator.userAgent)\r\n if (result.isDoc) {\r\n $body = staticDocument.body || staticDocument.documentElement\r\n arrayEach(['webkit', 'khtml', 'moz', 'ms', 'o'], function (core) {\r\n result['-' + core] = !!$body[core + 'MatchesSelector']\r\n })\r\n }\r\n assign(result, {\r\n edge: isEdge,\r\n firefox: isBrowseType('Firefox'),\r\n msie: !isEdge && result['-ms'],\r\n safari: !isChrome && !isEdge && isBrowseType('Safari'),\r\n isMobile: isMobile,\r\n isPC: !isMobile,\r\n isLocalStorage: isBrowseStorage(staticWindow.localStorage),\r\n isSessionStorage: isBrowseStorage(staticWindow.sessionStorage)\r\n })\r\n }\r\n return result\r\n}\r\n\r\nmodule.exports = browse\r\n","/* eslint-disable valid-typeof */\r\nvar staticStrUndefined = require('./staticStrUndefined')\r\n\r\n/**\r\n * 判断是否Symbol对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar supportSymbol = typeof Symbol !== staticStrUndefined\r\nfunction isSymbol (obj) {\r\n return supportSymbol && Symbol.isSymbol ? Symbol.isSymbol(obj) : (typeof obj === 'symbol')\r\n}\r\n\r\nmodule.exports = isSymbol\r\n","var helperCreateIterateHandle = require('./helperCreateIterateHandle')\r\n\r\n/**\r\n * 查找匹配第一条数据的键\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Object}\r\n */\r\nvar findKey = helperCreateIterateHandle('', 0, 2, true)\r\n\r\nmodule.exports = findKey\r\n","var helperCreateIndexOf = require('./helperCreateIndexOf')\r\n\r\nvar arrayLastIndexOf = require('./arrayLastIndexOf')\r\n\r\n/**\r\n * 从最后开始的索引值,返回对象第一个索引值\r\n *\r\n * @param {Object} array 对象\r\n * @param {Object} val 值\r\n * @return {Number}\r\n */\r\nvar lastIndexOf = helperCreateIndexOf('lastIndexOf', arrayLastIndexOf)\r\n\r\nmodule.exports = lastIndexOf\r\n","var random = require('./random')\r\n\r\nvar values = require('./values')\r\n\r\n/**\r\n * 将一个数组随机打乱,返回一个新的数组\r\n *\r\n * @param {Array} array 数组\r\n * @return {Array}\r\n */\r\nfunction shuffle (array) {\r\n var index\r\n var result = []\r\n var list = values(array)\r\n var len = list.length - 1\r\n for (; len >= 0; len--) {\r\n index = len > 0 ? random(0, len) : 0\r\n result.push(list[index])\r\n list.splice(index, 1)\r\n }\r\n return result\r\n}\r\n\r\nmodule.exports = shuffle\r\n","var isDate = require('./isDate')\r\nvar toStringDate = require('./toStringDate')\r\n\r\nvar helperNewDate = require('./helperNewDate')\r\n\r\n/**\r\n * 判断是否闰年\r\n *\r\n * @param {Date} date 日期或数字\r\n * @return {Boolean}\r\n */\r\nfunction isLeapYear (date) {\r\n var year\r\n var currentDate = date ? toStringDate(date) : helperNewDate()\r\n if (isDate(currentDate)) {\r\n year = currentDate.getFullYear()\r\n return (year % 4 === 0) && (year % 100 !== 0 || year % 400 === 0)\r\n }\r\n return false\r\n}\r\n\r\nmodule.exports = isLeapYear\r\n","var staticStrFirst = 'first'\r\n\r\nmodule.exports = staticStrFirst\r\n","var helperCreateInTypeof = require('./helperCreateInTypeof')\r\n\r\n/**\r\n * 判断是否方法\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar isFunction = helperCreateInTypeof('function')\r\n\r\nmodule.exports = isFunction\r\n","/* eslint-disable valid-typeof */\r\nvar staticStrUndefined = require('./staticStrUndefined')\r\n\r\n/**\r\n * 判断是否WeakSet对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar supportWeakSet = typeof WeakSet !== staticStrUndefined\r\nfunction isWeakSet (obj) {\r\n return supportWeakSet && obj instanceof WeakSet\r\n}\r\n\r\nmodule.exports = isWeakSet\r\n","var staticDecodeURIComponent = require('./staticDecodeURIComponent')\r\n\r\nvar arrayEach = require('./arrayEach')\r\n\r\nvar isString = require('./isString')\r\n\r\n/**\r\n * 反序列化查询参数\r\n * @param {String} query 字符串\r\n */\r\nfunction unserialize (str) {\r\n var items\r\n var result = {}\r\n if (str && isString(str)) {\r\n arrayEach(str.split('&'), function (param) {\r\n items = param.split('=')\r\n result[staticDecodeURIComponent(items[0])] = staticDecodeURIComponent(items[1] || '')\r\n })\r\n }\r\n return result\r\n}\r\n\r\nmodule.exports = unserialize\r\n","var toDateString = require('./toDateString')\r\n\r\n/**\r\n * 比较两个日期\r\n *\r\n * @param {Number/String/Date} date1 日期\r\n * @param {Number/String/Date} date2 日期\r\n * @param {String} format 对比格式\r\n */\r\nfunction isDateSame (date1, date2, format) {\r\n if (date1 && date2) {\r\n date1 = toDateString(date1, format)\r\n return date1 !== 'Invalid Date' && date1 === toDateString(date2, format)\r\n }\r\n return false\r\n}\r\n\r\nmodule.exports = isDateSame\r\n","var isEmpty = require('./isEmpty')\r\nvar isObject = require('./isObject')\r\nvar isFunction = require('./isFunction')\r\nvar property = require('./property')\r\nvar each = require('./each')\r\n\r\nfunction createiterateEmpty (iterate) {\r\n return function () {\r\n return isEmpty(iterate)\r\n }\r\n}\r\n\r\n/**\r\n * 集合分组,默认使用键值分组,如果有iterate则使用结果进行分组\r\n *\r\n * @param {Array} obj 对象\r\n * @param {Function} iterate 回调/对象属性\r\n * @param {Object} context 上下文\r\n * @return {Object}\r\n */\r\nfunction groupBy (obj, iterate, context) {\r\n var groupKey\r\n var result = {}\r\n if (obj) {\r\n if (iterate && isObject(iterate)) {\r\n iterate = createiterateEmpty(iterate)\r\n } else if (!isFunction(iterate)) {\r\n iterate = property(iterate)\r\n }\r\n each(obj, function (val, key) {\r\n groupKey = iterate ? iterate.call(context, val, key, obj) : val\r\n if (result[groupKey]) {\r\n result[groupKey].push(val)\r\n } else {\r\n result[groupKey] = [val]\r\n }\r\n })\r\n }\r\n return result\r\n}\r\n\r\nmodule.exports = groupBy\r\n","var template = require('./template')\r\n\r\n/**\r\n * 字符串格式化占位符\r\n * @param { string } str \r\n * @param { object | any[] } obj \r\n */\r\nfunction toFormatString (str, obj) {\r\n return template(str, obj,{ tmplRE: /\\{([.\\w[\\]\\s]+)\\}/g })\r\n}\r\n\r\nmodule.exports = toFormatString\r\n","var helperCreateInTypeof = require('./helperCreateInTypeof')\r\n\r\n/**\r\n * 判断是否String对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar isString = helperCreateInTypeof('string')\r\n\r\nmodule.exports = isString\r\n","/**\r\n * 序号列表生成函数\r\n *\r\n * @param {Number} start 起始值\r\n * @param {Number} stop 结束值\r\n * @param {Number} step 自增值\r\n * @return {Object}\r\n */\r\nfunction range (start, stop, step) {\r\n var index, len\r\n var result = []\r\n var args = arguments\r\n if (args.length < 2) {\r\n stop = args[0]\r\n start = 0\r\n }\r\n index = start >> 0\r\n len = stop >> 0\r\n if (index < stop) {\r\n step = step >> 0 || 1\r\n for (; index < len; index += step) {\r\n result.push(index)\r\n }\r\n }\r\n return result\r\n}\r\n\r\nmodule.exports = range\r\n","var orderBy = require('./orderBy')\r\n\r\nvar sortBy = orderBy\r\n\r\nmodule.exports = sortBy\r\n","var uniq = require('./uniq')\r\nvar toArray = require('./toArray')\r\n\r\n/**\r\n * 将多个数的值返回唯一的并集数组\r\n *\r\n * @param {...Array} 数组\r\n * @return {Array}\r\n */\r\nfunction union () {\r\n var args = arguments\r\n var result = []\r\n var index = 0\r\n var len = args.length\r\n for (; index < len; index++) {\r\n result = result.concat(toArray(args[index]))\r\n }\r\n return uniq(result)\r\n}\r\n\r\nmodule.exports = union\r\n","var pluck = require('./pluck')\r\n\r\nvar max = require('./max')\r\n\r\n/**\r\n * 与 zip 相反\r\n *\r\n * @param {Array} arrays 数组集合\r\n */\r\nfunction unzip (arrays) {\r\n var index, maxItem, len\r\n var result = []\r\n if (arrays && arrays.length) {\r\n index = 0\r\n maxItem = max(arrays, function (item) {\r\n return item ? item.length : 0\r\n })\r\n for (len = maxItem ? maxItem.length : 0; index < len; index++) {\r\n result.push(pluck(arrays, index))\r\n }\r\n }\r\n return result\r\n}\r\n\r\nmodule.exports = unzip\r\n","var helperNumberAdd = require('./helperNumberAdd')\r\n\r\nvar isFunction = require('./isFunction')\r\nvar each = require('./each')\r\nvar get = require('./get')\r\n\r\n/**\r\n * 求和函数,将数值相加\r\n *\r\n * @param {Array} array 数组\r\n * @param {Function/String} iterate 方法或属性\r\n * @param {Object} context 上下文\r\n * @return {Number}\r\n */\r\nfunction sum (array, iterate, context) {\r\n var result = 0\r\n each(array, iterate ? isFunction(iterate) ? function () {\r\n result = helperNumberAdd(result, iterate.apply(context, arguments))\r\n } : function (val) {\r\n result = helperNumberAdd(result, get(val, iterate))\r\n } : function (val) {\r\n result = helperNumberAdd(result, val)\r\n })\r\n return result\r\n}\r\n\r\nmodule.exports = sum\r\n","var helperCreateInInObjectString = require('./helperCreateInInObjectString')\r\n\r\n/**\r\n * 判断是否Arguments对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar isArguments = helperCreateInInObjectString('Arguments')\r\n\r\nmodule.exports = isArguments\r\n","var helperDeleteProperty = require('./helperDeleteProperty')\r\n\r\nvar isPlainObject = require('./isPlainObject')\r\nvar isObject = require('./isObject')\r\nvar isArray = require('./isArray')\r\nvar isNull = require('./isNull')\r\nvar assign = require('./assign')\r\nvar objectEach = require('./objectEach')\r\n\r\n/**\r\n * 清空对象\r\n *\r\n * @param {Object} obj 对象\r\n * @param {*} defs 默认值,如果不传(清空所有属性)、如果传对象(清空并继承)、如果传值(给所有赋值)\r\n * @param {Object/Array} assigns 默认值\r\n * @return {Object}\r\n */\r\nfunction clear (obj, defs, assigns) {\r\n if (obj) {\r\n var len\r\n var isDefs = arguments.length > 1 && (isNull(defs) || !isObject(defs))\r\n var extds = isDefs ? assigns : defs\r\n if (isPlainObject(obj)) {\r\n objectEach(obj, isDefs ? function (val, key) {\r\n obj[key] = defs\r\n } : function (val, key) {\r\n helperDeleteProperty(obj, key)\r\n })\r\n if (extds) {\r\n assign(obj, extds)\r\n }\r\n } else if (isArray(obj)) {\r\n if (isDefs) {\r\n len = obj.length\r\n while (len > 0) {\r\n len--\r\n obj[len] = defs\r\n }\r\n } else {\r\n obj.length = 0\r\n }\r\n if (extds) {\r\n obj.push.apply(obj, extds)\r\n }\r\n }\r\n }\r\n return obj\r\n}\r\n\r\nmodule.exports = clear\r\n","'use strict'\r\n\r\n// 核心\r\nvar XEUtils = require('./ctor')\r\n\r\n// 对象相关的方法\r\nvar assign = require('./assign')\r\nvar objectEach = require('./objectEach')\r\nvar lastObjectEach = require('./lastObjectEach')\r\nvar objectMap = require('./objectMap')\r\nvar merge = require('./merge')\r\n\r\n// 数组相关的方法\r\nvar map = require('./map')\r\nvar some = require('./some')\r\nvar every = require('./every')\r\nvar includeArrays = require('./includeArrays')\r\nvar arrayEach = require('./arrayEach')\r\nvar lastArrayEach = require('./lastArrayEach')\r\nvar uniq = require('./uniq')\r\nvar union = require('./union')\r\nvar toArray = require('./toArray')\r\nvar sortBy = require('./sortBy')\r\nvar orderBy = require('./orderBy')\r\nvar shuffle = require('./shuffle')\r\nvar sample = require('./sample')\r\nvar slice = require('./slice')\r\nvar filter = require('./filter')\r\nvar findKey = require('./findKey')\r\nvar includes = require('./includes')\r\nvar find = require('./find')\r\nvar findLast = require('./findLast')\r\nvar reduce = require('./reduce')\r\nvar copyWithin = require('./copyWithin')\r\nvar chunk = require('./chunk')\r\nvar zip = require('./zip')\r\nvar unzip = require('./unzip')\r\nvar zipObject = require('./zipObject')\r\nvar flatten = require('./flatten')\r\nvar pluck = require('./pluck')\r\nvar invoke = require('./invoke')\r\nvar toArrayTree = require('./toArrayTree')\r\nvar toTreeArray = require('./toTreeArray')\r\nvar findTree = require('./findTree')\r\nvar eachTree = require('./eachTree')\r\nvar mapTree = require('./mapTree')\r\nvar filterTree = require('./filterTree')\r\nvar searchTree = require('./searchTree')\r\nvar arrayIndexOf = require('./arrayIndexOf')\r\nvar arrayLastIndexOf = require('./arrayLastIndexOf')\r\n\r\n// 基础方法\r\nvar hasOwnProp = require('./hasOwnProp')\r\nvar isArray = require('./isArray')\r\nvar isNull = require('./isNull')\r\nvar isNumberNaN = require('./isNaN')\r\nvar isUndefined = require('./isUndefined')\r\nvar isFunction = require('./isFunction')\r\nvar isObject = require('./isObject')\r\nvar isString = require('./isString')\r\nvar isPlainObject = require('./isPlainObject')\r\nvar isLeapYear = require('./isLeapYear')\r\nvar isDate = require('./isDate')\r\nvar eqNull = require('./eqNull')\r\nvar each = require('./each')\r\nvar forOf = require('./forOf')\r\nvar lastForOf = require('./lastForOf')\r\nvar indexOf = require('./indexOf')\r\nvar lastIndexOf = require('./lastIndexOf')\r\nvar keys = require('./keys')\r\nvar values = require('./values')\r\nvar clone = require('./clone')\r\nvar getSize = require('./getSize')\r\nvar lastEach = require('./lastEach')\r\nvar remove = require('./remove')\r\nvar clear = require('./clear')\r\nvar isNumberFinite = require('./isFinite')\r\nvar isFloat = require('./isFloat')\r\nvar isInteger = require('./isInteger')\r\nvar isBoolean = require('./isBoolean')\r\nvar isNumber = require('./isNumber')\r\nvar isRegExp = require('./isRegExp')\r\nvar isError = require('./isError')\r\nvar isTypeError = require('./isTypeError')\r\nvar isEmpty = require('./isEmpty')\r\nvar isSymbol = require('./isSymbol')\r\nvar isArguments = require('./isArguments')\r\nvar isElement = require('./isElement')\r\nvar isDocument = require('./isDocument')\r\nvar isWindow = require('./isWindow')\r\nvar isFormData = require('./isFormData')\r\nvar isMap = require('./isMap')\r\nvar isWeakMap = require('./isWeakMap')\r\nvar isSet = require('./isSet')\r\nvar isWeakSet = require('./isWeakSet')\r\nvar isMatch = require('./isMatch')\r\nvar isEqual = require('./isEqual')\r\nvar isEqualWith = require('./isEqualWith')\r\nvar getType = require('./getType')\r\nvar uniqueId = require('./uniqueId')\r\nvar findIndexOf = require('./findIndexOf')\r\nvar findLastIndexOf = require('./findLastIndexOf')\r\nvar toStringJSON = require('./toStringJSON')\r\nvar toJSONString = require('./toJSONString')\r\nvar entries = require('./entries')\r\nvar pick = require('./pick')\r\nvar omit = require('./omit')\r\nvar first = require('./first')\r\nvar last = require('./last')\r\nvar has = require('./has')\r\nvar get = require('./get')\r\nvar set = require('./set')\r\nvar groupBy = require('./groupBy')\r\nvar countBy = require('./countBy')\r\nvar range = require('./range')\r\nvar destructuring = require('./destructuring')\r\n\r\n// 数值相关方法\r\nvar random = require('./random')\r\nvar max = require('./max')\r\nvar min = require('./min')\r\nvar commafy = require('./commafy')\r\nvar round = require('./round')\r\nvar ceil = require('./ceil')\r\nvar floor = require('./floor')\r\nvar toFixed = require('./toFixed')\r\nvar toInteger = require('./toInteger')\r\nvar toNumber = require('./toNumber')\r\nvar toNumberString = require('./toNumberString')\r\nvar add = require('./add')\r\nvar subtract = require('./subtract')\r\nvar multiply = require('./multiply')\r\nvar divide = require('./divide')\r\nvar sum = require('./sum')\r\nvar mean = require('./mean')\r\n\r\n// 日期相关的方法\r\nvar getWhatYear = require('./getWhatYear')\r\nvar getWhatQuarter = require('./getWhatQuarter')\r\nvar getWhatMonth = require('./getWhatMonth')\r\nvar getWhatDay = require('./getWhatDay')\r\nvar toStringDate = require('./toStringDate')\r\nvar toDateString = require('./toDateString')\r\nvar now = require('./now')\r\nvar timestamp = require('./timestamp')\r\nvar isValidDate = require('./isValidDate')\r\nvar isDateSame = require('./isDateSame')\r\nvar getWhatWeek = require('./getWhatWeek')\r\nvar getYearDay = require('./getYearDay')\r\nvar getYearWeek = require('./getYearWeek')\r\nvar getMonthWeek = require('./getMonthWeek')\r\nvar getDayOfYear = require('./getDayOfYear')\r\nvar getDayOfMonth = require('./getDayOfMonth')\r\nvar getDateDiff = require('./getDateDiff')\r\n\r\n// 字符串相关的方法\r\nvar padEnd = require('./padEnd')\r\nvar padStart = require('./padStart')\r\nvar repeat = require('./repeat')\r\nvar trim = require('./trim')\r\nvar trimRight = require('./trimRight')\r\nvar trimLeft = require('./trimLeft')\r\nvar escape = require('./escape')\r\nvar unescape = require('./unescape')\r\nvar camelCase = require('./camelCase')\r\nvar kebabCase = require('./kebabCase')\r\nvar startsWith = require('./startsWith')\r\nvar endsWith = require('./endsWith')\r\nvar template = require('./template')\r\nvar toFormatString = require('./toFormatString')\r\nvar toValueString = require('./toValueString')\r\n\r\n// 函数相关的方法\r\nvar noop = require('./noop')\r\nvar property = require('./property')\r\nvar bind = require('./bind')\r\nvar once = require('./once')\r\nvar after = require('./after')\r\nvar before = require('./before')\r\nvar throttle = require('./throttle')\r\nvar debounce = require('./debounce')\r\nvar delay = require('./delay')\r\n\r\n// 地址相关的方法\r\nvar unserialize = require('./unserialize')\r\nvar serialize = require('./serialize')\r\nvar parseUrl = require('./parseUrl')\r\n\r\n// 浏览器相关的方法\r\nvar getBaseURL = require('./getBaseURL')\r\nvar locat = require('./locat')\r\nvar cookie = require('./cookie')\r\nvar browse = require('./browse')\r\n\r\nassign(XEUtils, {\r\n // object\r\n assign: assign,\r\n objectEach: objectEach,\r\n lastObjectEach: lastObjectEach,\r\n objectMap: objectMap,\r\n merge: merge,\r\n\r\n // array\r\n uniq: uniq,\r\n union: union,\r\n sortBy: sortBy,\r\n orderBy: orderBy,\r\n shuffle: shuffle,\r\n sample: sample,\r\n some: some,\r\n every: every,\r\n slice: slice,\r\n filter: filter,\r\n find: find,\r\n findLast: findLast,\r\n findKey: findKey,\r\n includes: includes,\r\n arrayIndexOf: arrayIndexOf,\r\n arrayLastIndexOf: arrayLastIndexOf,\r\n map: map,\r\n reduce: reduce,\r\n copyWithin: copyWithin,\r\n chunk: chunk,\r\n zip: zip,\r\n unzip: unzip,\r\n zipObject: zipObject,\r\n flatten: flatten,\r\n toArray: toArray,\r\n includeArrays: includeArrays,\r\n pluck: pluck,\r\n invoke: invoke,\r\n arrayEach: arrayEach,\r\n lastArrayEach: lastArrayEach,\r\n toArrayTree: toArrayTree,\r\n toTreeArray: toTreeArray,\r\n findTree: findTree,\r\n eachTree: eachTree,\r\n mapTree: mapTree,\r\n filterTree: filterTree,\r\n searchTree: searchTree,\r\n\r\n // base\r\n hasOwnProp: hasOwnProp,\r\n eqNull: eqNull,\r\n isNaN: isNumberNaN,\r\n isFinite: isNumberFinite,\r\n isUndefined: isUndefined,\r\n isArray: isArray,\r\n isFloat: isFloat,\r\n isInteger: isInteger,\r\n isFunction: isFunction,\r\n isBoolean: isBoolean,\r\n isString: isString,\r\n isNumber: isNumber,\r\n isRegExp: isRegExp,\r\n isObject: isObject,\r\n isPlainObject: isPlainObject,\r\n isDate: isDate,\r\n isError: isError,\r\n isTypeError: isTypeError,\r\n isEmpty: isEmpty,\r\n isNull: isNull,\r\n isSymbol: isSymbol,\r\n isArguments: isArguments,\r\n isElement: isElement,\r\n isDocument: isDocument,\r\n isWindow: isWindow,\r\n isFormData: isFormData,\r\n isMap: isMap,\r\n isWeakMap: isWeakMap,\r\n isSet: isSet,\r\n isWeakSet: isWeakSet,\r\n isLeapYear: isLeapYear,\r\n isMatch: isMatch,\r\n isEqual: isEqual,\r\n isEqualWith: isEqualWith,\r\n getType: getType,\r\n uniqueId: uniqueId,\r\n getSize: getSize,\r\n indexOf: indexOf,\r\n lastIndexOf: lastIndexOf,\r\n findIndexOf: findIndexOf,\r\n findLastIndexOf: findLastIndexOf,\r\n toStringJSON: toStringJSON,\r\n toJSONString: toJSONString,\r\n keys: keys,\r\n values: values,\r\n entries: entries,\r\n pick: pick,\r\n omit: omit,\r\n first: first,\r\n last: last,\r\n each: each,\r\n forOf: forOf,\r\n lastForOf: lastForOf,\r\n lastEach: lastEach,\r\n has: has,\r\n get: get,\r\n set: set,\r\n groupBy: groupBy,\r\n countBy: countBy,\r\n clone: clone,\r\n clear: clear,\r\n remove: remove,\r\n range: range,\r\n destructuring: destructuring,\r\n\r\n // number\r\n random: random,\r\n min: min,\r\n max: max,\r\n commafy: commafy,\r\n round: round,\r\n ceil: ceil,\r\n floor: floor,\r\n toFixed: toFixed,\r\n toNumber: toNumber,\r\n toNumberString: toNumberString,\r\n toInteger: toInteger,\r\n add: add,\r\n subtract: subtract,\r\n multiply: multiply,\r\n divide: divide,\r\n sum: sum,\r\n mean: mean,\r\n\r\n // date\r\n now: now,\r\n timestamp: timestamp,\r\n isValidDate: isValidDate,\r\n isDateSame: isDateSame,\r\n toStringDate: toStringDate,\r\n toDateString: toDateString,\r\n getWhatYear: getWhatYear,\r\n getWhatQuarter: getWhatQuarter,\r\n getWhatMonth: getWhatMonth,\r\n getWhatWeek: getWhatWeek,\r\n getWhatDay: getWhatDay,\r\n getYearDay: getYearDay,\r\n getYearWeek: getYearWeek,\r\n getMonthWeek: getMonthWeek,\r\n getDayOfYear: getDayOfYear,\r\n getDayOfMonth: getDayOfMonth,\r\n getDateDiff: getDateDiff,\r\n\r\n // string\r\n trim: trim,\r\n trimLeft: trimLeft,\r\n trimRight: trimRight,\r\n escape: escape,\r\n unescape: unescape,\r\n camelCase: camelCase,\r\n kebabCase: kebabCase,\r\n repeat: repeat,\r\n padStart: padStart,\r\n padEnd: padEnd,\r\n startsWith: startsWith,\r\n endsWith: endsWith,\r\n template: template,\r\n toFormatString: toFormatString,\r\n toString: toValueString,\r\n toValueString: toValueString,\r\n\r\n // function\r\n noop: noop,\r\n property: property,\r\n bind: bind,\r\n once: once,\r\n after: after,\r\n before: before,\r\n throttle: throttle,\r\n debounce: debounce,\r\n delay: delay,\r\n\r\n // url\r\n unserialize: unserialize,\r\n serialize: serialize,\r\n parseUrl: parseUrl,\r\n\r\n // web\r\n getBaseURL: getBaseURL,\r\n locat: locat,\r\n browse: browse,\r\n cookie: cookie\r\n})\r\n\r\nmodule.exports = XEUtils\r\n","var staticParseInt = require('./staticParseInt')\r\n\r\nfunction helperStringRepeat (str, count) {\r\n if (str.repeat) {\r\n return str.repeat(count)\r\n }\r\n var list = isNaN(count) ? [] : new Array(staticParseInt(count))\r\n return list.join(str) + (list.length > 0 ? str : '')\r\n}\r\n\r\nmodule.exports = helperStringRepeat\r\n","var slice = require('./slice')\r\n\r\n/**\r\n * 创建一个绑定上下文的函数\r\n *\r\n * @param {Function} callback 函数\r\n * @param {Object} context 上下文\r\n * @param {*} args 额外的参数\r\n * @return {Object}\r\n */\r\nfunction bind (callback, context) {\r\n var args = slice(arguments, 2)\r\n return function () {\r\n return callback.apply(context, slice(arguments).concat(args))\r\n }\r\n}\r\n\r\nmodule.exports = bind\r\n","var helperCreateMathNumber = require('./helperCreateMathNumber')\r\n\r\n/**\r\n * 将数值四舍五入\r\n *\r\n * @param {string|number} num 数值\r\n * @param {number} digits 小数保留位数\r\n * @return {number}\r\n */\r\nvar round = helperCreateMathNumber('round')\r\n\r\nmodule.exports = round\r\n","/* eslint-disable valid-typeof */\r\nfunction helperCreateInTypeof (type) {\r\n return function (obj) {\r\n return typeof obj === type\r\n }\r\n}\r\n\r\nmodule.exports = helperCreateInTypeof\r\n","/**\r\n * 判断是否TypeError对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nfunction isTypeError (obj) {\r\n return obj ? obj.constructor === TypeError : false\r\n}\r\n\r\nmodule.exports = isTypeError\r\n","var getWhatMonth = require('./getWhatMonth')\r\n\r\nvar toStringDate = require('./toStringDate')\r\n\r\nvar isValidDate = require('./isValidDate')\r\n\r\nfunction getQuarterNumber (date) {\r\n var month = date.getMonth()\r\n if (month < 3) {\r\n return 1\r\n } else if (month < 6) {\r\n return 2\r\n } else if (month < 9) {\r\n return 3\r\n }\r\n return 4\r\n}\r\n\r\n/**\r\n * 返回前几季度或后几季度的日期\r\n *\r\n * @param {Date} date 日期\r\n * @param {Number} offset 季度(默认当前季度)、前几季度、后几季度\r\n * @param {Number} day 获取哪天:月初(first)、月末(last)、指定天数(数值),如果为空,但超过指定月份的天数时,则默认单月最后一天\r\n * @return {Date}\r\n */\r\nfunction getWhatQuarter (date, offset, day) {\r\n var currMonth, monthOffset = offset && !isNaN(offset) ? offset * 3 : 0\r\n date = toStringDate(date)\r\n if (isValidDate(date)) {\r\n currMonth = (getQuarterNumber(date) - 1) * 3\r\n date.setMonth(currMonth)\r\n return getWhatMonth(date, monthOffset, day)\r\n }\r\n return date\r\n}\r\n\r\nmodule.exports = getWhatQuarter\r\n","var staticParseInt = parseInt\r\n\r\nmodule.exports = staticParseInt\r\n","var staticStrLast = 'last'\r\n\r\nmodule.exports = staticStrLast\r\n","var eqNull = require('./eqNull')\r\nvar isNumber = require('./isNumber')\r\nvar toNumberString = require('./toNumberString')\r\n\r\nfunction toValueString (obj) {\r\n if (isNumber(obj)) {\r\n return toNumberString(obj)\r\n }\r\n return '' + (eqNull(obj) ? '' : obj)\r\n}\r\n\r\nmodule.exports = toValueString\r\n","var staticEscapeMap = require('./staticEscapeMap')\r\n\r\nvar helperFormatEscaper = require('./helperFormatEscaper')\r\n\r\n/**\r\n * 转义HTML字符串,替换&, <, >, \", ', `字符\r\n *\r\n * @param {String} str 字符串\r\n * @return {String}\r\n */\r\nvar escape = helperFormatEscaper(staticEscapeMap)\r\n\r\nmodule.exports = escape\r\n","'use strict'\r\n\r\nvar setupDefaults = require('./setupDefaults')\r\n\r\nvar arrayEach = require('./arrayEach')\r\nvar each = require('./each')\r\nvar isFunction = require('./isFunction')\r\n\r\nvar assign = require('./assign')\r\n\r\nvar XEUtils = function () {}\r\n\r\nfunction mixin () {\r\n arrayEach(arguments, function (methods) {\r\n each(methods, function (fn, name) {\r\n XEUtils[name] = isFunction(fn) ? function () {\r\n var result = fn.apply(XEUtils.$context, arguments)\r\n XEUtils.$context = null\r\n return result\r\n } : fn\r\n })\r\n })\r\n}\r\n\r\nfunction setup (options) {\r\n return assign(setupDefaults, options)\r\n}\r\n\r\nXEUtils.VERSION = '3.5.3'\r\nXEUtils.mixin = mixin\r\nXEUtils.setup = setup\r\n\r\nmodule.exports = XEUtils\r\n","var helperCreateIterateHandle = require('./helperCreateIterateHandle')\r\n\r\n/**\r\n * 对象中的值中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true,否则返回false\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Boolean}\r\n */\r\nvar every = helperCreateIterateHandle('every', 1, 1, false, true)\r\n\r\nmodule.exports = every\r\n","var helperEqualCompare = require('./helperEqualCompare')\r\nvar helperDefaultCompare = require('./helperDefaultCompare')\r\n\r\n/**\r\n * 深度比较两个对象之间的值是否相等\r\n *\r\n * @param {Object} obj1 值1\r\n * @param {Object} obj2 值2\r\n * @return {Boolean}\r\n */\r\nfunction isEqual (obj1, obj2) {\r\n return helperEqualCompare(obj1, obj2, helperDefaultCompare)\r\n}\r\n\r\nmodule.exports = isEqual\r\n","var staticStrUndefined = require('./staticStrUndefined')\r\n\r\n/* eslint-disable valid-typeof */\r\nvar staticLocation = typeof location === staticStrUndefined ? 0 : location\r\n\r\nmodule.exports = staticLocation\r\n","var helperCreateInTypeof = require('./helperCreateInTypeof')\r\n\r\n/**\r\n * 判断是否Object对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar isObject = helperCreateInTypeof('object')\r\n\r\nmodule.exports = isObject\r\n","var helperCreateIterateHandle = require('./helperCreateIterateHandle')\r\n\r\n/**\r\n * 对象中的值中的每一项运行给定函数,如果函数对任一项返回true,则返回true,否则返回false\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Boolean}\r\n */\r\nvar some = helperCreateIterateHandle('some', 1, 0, true, false)\r\n\r\nmodule.exports = some\r\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","function helperStringUpperCase (str) {\r\n return str.toUpperCase()\r\n}\r\n\r\nmodule.exports = helperStringUpperCase\r\n","var staticDayTime = 86400000\r\n\r\nmodule.exports = staticDayTime\r\n","var each = require('./each')\r\n\r\n/**\r\n * 指定方法后的返回值组成的新数组\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Array}\r\n */\r\nfunction map (obj, iterate, context) {\r\n var result = []\r\n if (obj && arguments.length > 1) {\r\n if (obj.map) {\r\n return obj.map(iterate, context)\r\n } else {\r\n each(obj, function () {\r\n result.push(iterate.apply(context, arguments))\r\n })\r\n }\r\n }\r\n return result\r\n}\r\n\r\nmodule.exports = map\r\n","var staticEncodeURIComponent = require('./staticEncodeURIComponent')\r\n\r\nvar each = require('./each')\r\nvar isArray = require('./isArray')\r\nvar isNull = require('./isNull')\r\nvar isUndefined = require('./isUndefined')\r\nvar isPlainObject = require('./isPlainObject')\r\n\r\nfunction stringifyParams (resultVal, resultKey, isArr) {\r\n var _arr\r\n var result = []\r\n each(resultVal, function (item, key) {\r\n _arr = isArray(item)\r\n if (isPlainObject(item) || _arr) {\r\n result = result.concat(stringifyParams(item, resultKey + '[' + key + ']', _arr))\r\n } else {\r\n result.push(staticEncodeURIComponent(resultKey + '[' + (isArr ? '' : key) + ']') + '=' + staticEncodeURIComponent(isNull(item) ? '' : item))\r\n }\r\n })\r\n return result\r\n}\r\n\r\n/**\r\n * 序列化查询参数\r\n *\r\n * @param {Object} query 查询参数\r\n */\r\nfunction serialize (query) {\r\n var _arr\r\n var params = []\r\n each(query, function (item, key) {\r\n if (!isUndefined(item)) {\r\n _arr = isArray(item)\r\n if (isPlainObject(item) || _arr) {\r\n params = params.concat(stringifyParams(item, key, _arr))\r\n } else {\r\n params.push(staticEncodeURIComponent(key) + '=' + staticEncodeURIComponent(isNull(item) ? '' : item))\r\n }\r\n }\r\n })\r\n return params.join('&').replace(/%20/g, '+')\r\n}\r\n\r\nmodule.exports = serialize\r\n","var objectToString = require('./staticObjectToString')\r\n\r\nvar objectEach = require('./objectEach')\r\nvar arrayEach = require('./arrayEach')\r\n\r\nfunction getCativeCtor (val, args) {\r\n var Ctor = val.__proto__.constructor\r\n return args ? new Ctor(args) : new Ctor()\r\n}\r\n\r\nfunction handleValueClone (item, isDeep) {\r\n return isDeep ? copyValue(item, isDeep) : item\r\n}\r\n\r\nfunction copyValue (val, isDeep) {\r\n if (val) {\r\n switch(objectToString.call(val)) {\r\n case \"[object Object]\": {\r\n var restObj = Object.create(val.__proto__)\r\n objectEach(val, function (item, key) {\r\n restObj[key] = handleValueClone(item, isDeep)\r\n })\r\n return restObj\r\n }\r\n case \"[object Date]\":\r\n case \"[object RegExp]\": {\r\n return getCativeCtor(val, val.valueOf())\r\n }\r\n case \"[object Array]\":\r\n case \"[object Arguments]\": {\r\n var restArr = []\r\n arrayEach(val, function (item) {\r\n restArr.push(handleValueClone(item, isDeep))\r\n })\r\n return restArr\r\n }\r\n case \"[object Set]\": {\r\n var restSet = getCativeCtor(val)\r\n restSet.forEach(function (item) {\r\n restSet.add(handleValueClone(item, isDeep))\r\n })\r\n return restSet\r\n }\r\n case \"[object Map]\": {\r\n var restMap = getCativeCtor(val)\r\n restMap.forEach(function (item, key) {\r\n restMap.set(handleValueClone(item, isDeep))\r\n })\r\n return restMap\r\n }\r\n }\r\n }\r\n return val\r\n}\r\n\r\n/**\r\n * 浅拷贝/深拷贝\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Boolean} deep 是否深拷贝\r\n * @return {Object}\r\n */\r\nfunction clone (obj, deep) {\r\n if (obj) {\r\n return copyValue(obj, deep)\r\n }\r\n return obj\r\n}\r\n\r\nmodule.exports = clone\r\n","/**\r\n * 函数去抖;当被调用 n 毫秒后才会执行,如果在这时间内又被调用则将重新计算执行时间\r\n *\r\n * @param {Function} callback 回调\r\n * @param {Number} wait 多少秒毫\r\n * @param {Object} options 参数{leading: 是否在之前执行, trailing: 是否在之后执行}\r\n * @return {Function}\r\n */\r\nfunction debounce (callback, wait, options) {\r\n var args, context\r\n var opts = options || {}\r\n var runFlag = false\r\n var timeout = 0\r\n var isLeading = typeof options === 'boolean'\r\n var optLeading = 'leading' in opts ? opts.leading : isLeading\r\n var optTrailing = 'trailing' in opts ? opts.trailing : !isLeading\r\n var runFn = function () {\r\n runFlag = true\r\n timeout = 0\r\n callback.apply(context, args)\r\n }\r\n var endFn = function () {\r\n if (optLeading === true) {\r\n timeout = 0\r\n }\r\n if (!runFlag && optTrailing === true) {\r\n runFn()\r\n }\r\n }\r\n var cancelFn = function () {\r\n var rest = timeout !== 0\r\n clearTimeout(timeout)\r\n timeout = 0\r\n return rest\r\n }\r\n var debounced = function () {\r\n runFlag = false\r\n args = arguments\r\n context = this\r\n if (timeout === 0) {\r\n if (optLeading === true) {\r\n runFn()\r\n }\r\n } else {\r\n clearTimeout(timeout)\r\n }\r\n timeout = setTimeout(endFn, wait)\r\n }\r\n debounced.cancel = cancelFn\r\n return debounced\r\n}\r\n\r\nmodule.exports = debounce\r\n","var staticStrUndefined = require('./staticStrUndefined')\r\n\r\n/* eslint-disable valid-typeof */\r\nvar staticDocument = typeof document === staticStrUndefined ? 0 : document\r\n\r\nmodule.exports = staticDocument\r\n","var setupDefaults = require('./setupDefaults')\r\nvar staticDocument = require('./staticDocument')\r\nvar staticDecodeURIComponent = require('./staticDecodeURIComponent')\r\nvar staticEncodeURIComponent = require('./staticEncodeURIComponent')\r\n\r\nvar isArray = require('./isArray')\r\nvar isObject = require('./isObject')\r\nvar isDate = require('./isDate')\r\nvar isUndefined = require('./isUndefined')\r\nvar includes = require('./includes')\r\nvar keys = require('./keys')\r\n\r\nvar assign = require('./assign')\r\n\r\nvar arrayEach = require('./arrayEach')\r\n\r\nvar helperNewDate = require('./helperNewDate')\r\nvar helperGetDateTime = require('./helperGetDateTime')\r\nvar getWhatYear = require('./getWhatYear')\r\nvar getWhatMonth = require('./getWhatMonth')\r\nvar getWhatDay = require('./getWhatDay')\r\n\r\nfunction toCookieUnitTime (unit, expires) {\r\n var num = parseFloat(expires)\r\n var nowdate = helperNewDate()\r\n var time = helperGetDateTime(nowdate)\r\n switch (unit) {\r\n case 'y': return helperGetDateTime(getWhatYear(nowdate, num))\r\n case 'M': return helperGetDateTime(getWhatMonth(nowdate, num))\r\n case 'd': return helperGetDateTime(getWhatDay(nowdate, num))\r\n case 'h':\r\n case 'H': return time + num * 60 * 60 * 1000\r\n case 'm': return time + num * 60 * 1000\r\n case 's': return time + num * 1000\r\n }\r\n return time\r\n}\r\n\r\nfunction toCookieUTCString (date) {\r\n return (isDate(date) ? date : new Date(date)).toUTCString()\r\n}\r\n\r\n/**\r\n * cookie操作函数\r\n * @param {String/Array/Object} name 键/数组/对象\r\n * @param {String} value 值\r\n * @param {Object} options 参数\r\n * @param {String} name: 键\r\n * @param {Object} value: 值\r\n * @param {String} path: 路径\r\n * @param {String} domain: 作用域\r\n * @param {Boolean} secure: 设置为安全的,只能用https协议\r\n * @param {Number} expires: 过期时间,可以指定日期或者字符串,默认天\r\n */\r\nfunction cookie (name, value, options) {\r\n if (staticDocument) {\r\n var opts, expires, values, result, cookies, keyIndex\r\n var inserts = []\r\n var args = arguments\r\n if (isArray(name)) {\r\n inserts = name\r\n } else if (args.length > 1) {\r\n inserts = [assign({ name: name, value: value }, options)]\r\n } else if (isObject(name)) {\r\n inserts = [name]\r\n }\r\n if (inserts.length > 0) {\r\n arrayEach(inserts, function (obj) {\r\n opts = assign({}, setupDefaults.cookies, obj)\r\n values = []\r\n if (opts.name) {\r\n expires = opts.expires\r\n values.push(staticEncodeURIComponent(opts.name) + '=' + staticEncodeURIComponent(isObject(opts.value) ? JSON.stringify(opts.value) : opts.value))\r\n if (expires) {\r\n if (isNaN(expires)) {\r\n // UTCString || Unit\r\n expires = expires.replace(/^([0-9]+)(y|M|d|H|h|m|s)$/, function (text, num, unit) {\r\n return toCookieUTCString(toCookieUnitTime(unit, num))\r\n })\r\n } else if (/^[0-9]{11,13}$/.test(expires) || isDate(expires)) {\r\n // Date || now\r\n expires = toCookieUTCString(expires)\r\n } else {\r\n // day\r\n expires = toCookieUTCString(toCookieUnitTime('d', expires))\r\n }\r\n opts.expires = expires\r\n }\r\n arrayEach(['expires', 'path', 'domain', 'secure'], function (key) {\r\n if (!isUndefined(opts[key])) {\r\n values.push(opts[key] && key === 'secure' ? key : (key + '=' + opts[key]))\r\n }\r\n })\r\n }\r\n staticDocument.cookie = values.join('; ')\r\n })\r\n return true\r\n } else {\r\n result = {}\r\n cookies = staticDocument.cookie\r\n if (cookies) {\r\n arrayEach(cookies.split('; '), function (val) {\r\n keyIndex = val.indexOf('=')\r\n result[staticDecodeURIComponent(val.substring(0, keyIndex))] = staticDecodeURIComponent(val.substring(keyIndex + 1) || '')\r\n })\r\n }\r\n return args.length === 1 ? result[name] : result\r\n }\r\n }\r\n return false\r\n}\r\n\r\nfunction hasCookieItem (value) {\r\n return includes(cookieKeys(), value)\r\n}\r\n\r\nfunction getCookieItem (name) {\r\n return cookie(name)\r\n}\r\n\r\nfunction setCookieItem (name, value, options) {\r\n cookie(name, value, options)\r\n return cookie\r\n}\r\n\r\nfunction removeCookieItem (name, options) {\r\n cookie(name, '', assign({ expires: -1 }, setupDefaults.cookies, options))\r\n}\r\n\r\nfunction cookieKeys () {\r\n return keys(cookie())\r\n}\r\n\r\nfunction cookieJson () {\r\n return cookie()\r\n}\r\n\r\nassign(cookie, {\r\n has: hasCookieItem,\r\n set: setCookieItem,\r\n setItem: setCookieItem,\r\n get: getCookieItem,\r\n getItem: getCookieItem,\r\n remove: removeCookieItem,\r\n removeItem: removeCookieItem,\r\n keys: cookieKeys,\r\n getJSON: cookieJson\r\n})\r\n\r\nmodule.exports = cookie\r\n","var staticHGKeyRE = /(.+)?\\[(\\d+)\\]$/\r\n\r\nmodule.exports = staticHGKeyRE\r\n","function helperGetUTCDateTime (resMaps) {\r\n return Date.UTC(resMaps.y, resMaps.M || 0, resMaps.d || 1, resMaps.H || 0, resMaps.m || 0, resMaps.s || 0, resMaps.S || 0)\r\n}\r\n\r\nmodule.exports = helperGetUTCDateTime\r\n","function helperCreateTreeFunc (handle) {\r\n return function (obj, iterate, options, context) {\r\n var opts = options || {}\r\n var optChildren = opts.children || 'children'\r\n return handle(null, obj, iterate, context, [], [], optChildren, opts)\r\n }\r\n}\r\n\r\nmodule.exports = helperCreateTreeFunc\r\n","function helperNumberOffsetPoint (str, offsetIndex) {\r\n return str.substring(0, offsetIndex) + '.' + str.substring(offsetIndex, str.length)\r\n}\r\n\r\nmodule.exports = helperNumberOffsetPoint\r\n","var helperCreateInInObjectString = require('./helperCreateInInObjectString')\r\n\r\n/**\r\n * 判断是否RegExp对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar isRegExp = helperCreateInInObjectString('RegExp')\r\n\r\nmodule.exports = isRegExp\r\n","/**\r\n * 判断是否为Null\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nfunction isNull (obj) {\r\n return obj === null\r\n}\r\n\r\nmodule.exports = isNull\r\n","var toValueString = require('./toValueString')\r\n\r\n/**\r\n * 去除字符串左边的空格\r\n *\r\n * @param {String} str 字符串\r\n * @return {String}\r\n */\r\nfunction trimLeft (str) {\r\n return str && str.trimLeft ? str.trimLeft() : toValueString(str).replace(/^[\\s\\uFEFF\\xA0]+/g, '')\r\n}\r\n\r\nmodule.exports = trimLeft\r\n","var setupDefaults = require('./setupDefaults')\r\n\r\nvar helperGetDateTime = require('./helperGetDateTime')\r\nvar helperNewDate = require('./helperNewDate')\r\n\r\nvar toStringDate = require('./toStringDate')\r\n\r\nvar isValidDate = require('./isValidDate')\r\n\r\n/**\r\n * 返回两个日期之间差距,如果结束日期小于开始日期done为fasle\r\n *\r\n * @param {Date} startDate 开始日期\r\n * @param {Date} endDate 结束日期或当期日期\r\n * @param {Date} rule 自定义计算规则\r\n * @return {Object}\r\n */\r\nfunction getDateDiff (startDate, endDate, rules) {\r\n var startTime, endTime, item, diffTime, rule, len, index\r\n var result = { done: false, time: 0 }\r\n startDate = toStringDate(startDate)\r\n endDate = endDate ? toStringDate(endDate) : helperNewDate()\r\n if (isValidDate(startDate) && isValidDate(endDate)) {\r\n startTime = helperGetDateTime(startDate)\r\n endTime = helperGetDateTime(endDate)\r\n if (startTime < endTime) {\r\n diffTime = result.time = endTime - startTime\r\n rule = rules && rules.length > 0 ? rules : setupDefaults.dateDiffRules\r\n result.done = true\r\n for (index = 0, len = rule.length; index < len; index++) {\r\n item = rule[index]\r\n if (diffTime >= item[1]) {\r\n if (index === len - 1) {\r\n result[item[0]] = diffTime || 0\r\n } else {\r\n result[item[0]] = Math.floor(diffTime / item[1])\r\n diffTime -= result[item[0]] * item[1]\r\n }\r\n } else {\r\n result[item[0]] = 0\r\n }\r\n }\r\n }\r\n }\r\n return result\r\n}\r\n\r\nmodule.exports = getDateDiff\r\n","var trimRight = require('./trimRight')\r\nvar trimLeft = require('./trimLeft')\r\n\r\n/**\r\n * 去除字符串左右两边的空格\r\n *\r\n * @param {String} str 字符串\r\n * @return {String}\r\n */\r\nfunction trim (str) {\r\n return str && str.trim ? str.trim() : trimRight(trimLeft(str))\r\n}\r\n\r\nmodule.exports = trim\r\n","var isNull = require('./isNull')\r\n\r\n/**\r\n * 返回一个获取对象属性的函数\r\n *\r\n * @param {String} name 属性名\r\n * @param {Object} defs 空值\r\n */\r\nfunction property (name, defs) {\r\n return function (obj) {\r\n return isNull(obj) ? defs : obj[name]\r\n }\r\n}\r\n\r\nmodule.exports = property\r\n","var helperCreatePickOmit = require('./helperCreatePickOmit')\r\n\r\n/**\r\n * 根据 key 排除指定的属性值,返回一个新的对象\r\n *\r\n * @param {Object} obj 对象\r\n * @param {String/Array} key 键数组\r\n * @return {Object}\r\n */\r\nvar omit = helperCreatePickOmit(0, 1)\r\n\r\nmodule.exports = omit\r\n","var eachTree = require('./eachTree')\r\n\r\n/**\r\n * 从树结构中根据回调过滤数据\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, items, path, parent) 回调\r\n * @param {Object} options {children: 'children'}\r\n * @param {Object} context 上下文\r\n * @return {Array}\r\n */\r\nfunction filterTree (obj, iterate, options, context) {\r\n var result = []\r\n if (obj && iterate) {\r\n eachTree(obj, function (item, index, items, path, parent, nodes) {\r\n if (iterate.call(context, item, index, items, path, parent, nodes)) {\r\n result.push(item)\r\n }\r\n }, options)\r\n }\r\n return result\r\n}\r\n\r\nmodule.exports = filterTree\r\n","var shuffle = require('./shuffle')\r\n\r\n/**\r\n * 从一个数组中随机返回几个元素\r\n *\r\n * @param {Array} array 数组\r\n * @param {Number} number 个数\r\n * @return {Array}\r\n */\r\nfunction sample (array, number) {\r\n var result = shuffle(array)\r\n if (arguments.length <= 1) {\r\n return result[0]\r\n }\r\n if (number < result.length) {\r\n result.length = number || 0\r\n }\r\n return result\r\n}\r\n\r\nmodule.exports = sample\r\n","var toValueString = require('./toValueString')\r\nvar helperStringSubstring = require('./helperStringSubstring')\r\nvar helperStringLowerCase = require('./helperStringLowerCase')\r\n\r\nvar kebabCacheMaps = {}\r\n\r\n/**\r\n * 将带驼峰字符串转成字符串,例如: projectName 转为 project-name\r\n *\r\n * @param {String} str 字符串\r\n * @return {String}\r\n */\r\nfunction kebabCase (str) {\r\n str = toValueString(str)\r\n if (kebabCacheMaps[str]) {\r\n return kebabCacheMaps[str]\r\n }\r\n if (/^[A-Z]+$/.test(str)) {\r\n return helperStringLowerCase(str)\r\n }\r\n var rest = str.replace(/^([a-z])([A-Z]+)([a-z]+)$/, function (text, prevLower, upper, nextLower) {\r\n var upperLen = upper.length\r\n if (upperLen > 1) {\r\n return prevLower + '-' + helperStringLowerCase(helperStringSubstring(upper, 0, upperLen - 1)) + '-' + helperStringLowerCase(helperStringSubstring(upper, upperLen - 1, upperLen)) + nextLower\r\n }\r\n return helperStringLowerCase(prevLower + '-' + upper + nextLower)\r\n }).replace(/^([A-Z]+)([a-z]+)?$/, function (text, upper, nextLower) {\r\n var upperLen = upper.length\r\n return helperStringLowerCase(helperStringSubstring(upper, 0, upperLen - 1) + '-' + helperStringSubstring(upper, upperLen - 1, upperLen) + (nextLower || ''))\r\n }).replace(/([a-z]?)([A-Z]+)([a-z]?)/g, function (text, prevLower, upper, nextLower, index) {\r\n var upperLen = upper.length\r\n if (upperLen > 1) {\r\n if (prevLower) {\r\n prevLower += '-'\r\n }\r\n if (nextLower) {\r\n return (prevLower || '') + helperStringLowerCase(helperStringSubstring(upper, 0, upperLen - 1)) + '-' + helperStringLowerCase(helperStringSubstring(upper, upperLen - 1, upperLen)) + nextLower\r\n }\r\n }\r\n return (prevLower || '') + (index ? '-' : '') + helperStringLowerCase(upper) + (nextLower || '')\r\n })\r\n rest = rest.replace(/([-]+)/g, function (text, flag, index) {\r\n return index && index + flag.length < rest.length ? '-' : ''\r\n })\r\n kebabCacheMaps[str] = rest\r\n return rest\r\n}\r\n\r\nmodule.exports = kebabCase\r\n","var values = require('./values')\r\n\r\n/**\r\n * 获取对象第一个值\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @return {Object}\r\n */\r\nfunction first (obj) {\r\n return values(obj)[0]\r\n}\r\n\r\nmodule.exports = first\r\n","/**\r\n * 获取一个指定范围内随机数\r\n *\r\n * @param {Number} minVal 最小值\r\n * @param {Number} maxVal 最大值\r\n * @return {Number}\r\n */\r\nfunction random (minVal, maxVal) {\r\n return minVal >= maxVal ? minVal : ((minVal = minVal >> 0) + Math.round(Math.random() * ((maxVal || 9) - minVal)))\r\n}\r\n\r\nmodule.exports = random\r\n","var isSymbol = require('./isSymbol')\r\nvar isDate = require('./isDate')\r\nvar isArray = require('./isArray')\r\nvar isRegExp = require('./isRegExp')\r\nvar isError = require('./isError')\r\nvar isNull = require('./isNull')\r\n\r\n/**\r\n * 获取对象类型\r\n *\r\n * @param {Object} obj 对象\r\n * @return {String}\r\n */\r\nfunction getType (obj) {\r\n if (isNull(obj)) {\r\n return 'null'\r\n }\r\n if (isSymbol(obj)) {\r\n return 'symbol'\r\n }\r\n if (isDate(obj)) {\r\n return 'date'\r\n }\r\n if (isArray(obj)) {\r\n return 'array'\r\n }\r\n if (isRegExp(obj)) {\r\n return 'regexp'\r\n }\r\n if (isError(obj)) {\r\n return 'error'\r\n }\r\n return typeof obj\r\n}\r\n\r\nmodule.exports = getType\r\n","var helperCreateMathNumber = require('./helperCreateMathNumber')\r\n\r\n/**\r\n * 将数值向上舍入\r\n *\r\n * @param {string|number} num 数值\r\n * @param {number} digits 小数保留位数\r\n * @return {number}\r\n */\r\nvar ceil = helperCreateMathNumber('ceil')\r\n\r\nmodule.exports = ceil\r\n","var slice = require('./slice')\r\n\r\n/**\r\n * 该方法和 setTimeout 一样的效果,区别就是支持上下文和额外参数\r\n *\r\n * @param {Function} callback 函数\r\n * @param {Number} wait 延迟毫秒\r\n * @param {*} args 额外的参数\r\n * @return {Number}\r\n */\r\nfunction delay (callback, wait) {\r\n var args = slice(arguments, 2)\r\n var context = this\r\n return setTimeout(function () {\r\n callback.apply(context, args)\r\n }, wait)\r\n}\r\n\r\nmodule.exports = delay\r\n","var staticDayTime = require('./staticDayTime')\r\n\r\nvar staticWeekTime = staticDayTime * 7\r\n\r\nmodule.exports = staticWeekTime\r\n","var helperNumberDecimal = require('./helperNumberDecimal')\r\nvar toNumberString = require('./toNumberString')\r\nvar multiply = require('./multiply')\r\n\r\nfunction helperNumberAdd (addend, augend) {\r\n var str1 = toNumberString(addend)\r\n var str2 = toNumberString(augend)\r\n var ratio = Math.pow(10, Math.max(helperNumberDecimal(str1), helperNumberDecimal(str2)))\r\n return (multiply(addend, ratio) + multiply(augend, ratio)) / ratio\r\n}\r\n\r\nmodule.exports = helperNumberAdd\r\n","/**\r\n * 一个空的方法,始终返回 undefined,可用于初始化值\r\n */\r\nfunction noop () {}\r\n\r\nmodule.exports = noop\r\n","var staticParseInt = require('./staticParseInt')\r\n\r\nvar helperGetUTCDateTime = require('./helperGetUTCDateTime')\r\nvar helperGetDateTime = require('./helperGetDateTime')\r\n\r\nvar isString = require('./isString')\r\nvar isDate = require('./isDate')\r\n\r\nfunction getParseRule (txt) {\r\n return '(\\\\d{' + txt + '})'\r\n}\r\n\r\nfunction toParseMs (num) {\r\n if (num < 10) {\r\n return num * 100\r\n } else if (num < 100) {\r\n return num * 10\r\n }\r\n return num\r\n}\r\n\r\nfunction toParseNum (num) {\r\n return isNaN(num) ? num : staticParseInt(num)\r\n}\r\n\r\nvar d2 = getParseRule(2)\r\nvar d1or2 = getParseRule('1,2')\r\nvar d1or7 = getParseRule('1,7')\r\nvar d3or4 = getParseRule('3,4')\r\nvar place = '.{1}'\r\nvar d1Or2RE = place + d1or2\r\nvar dzZ = '(([zZ])|([-+]\\\\d{2}:?\\\\d{2}))'\r\n\r\nvar defaulParseStrs = [d3or4, d1Or2RE, d1Or2RE, d1Or2RE, d1Or2RE, d1Or2RE, place + d1or7, dzZ]\r\nvar defaulParseREs = []\r\n\r\nfor (var len = defaulParseStrs.length - 1; len >= 0; len--) {\r\n var rule = ''\r\n for (var i = 0; i < len + 1; i++) {\r\n rule += defaulParseStrs[i]\r\n }\r\n defaulParseREs.push(new RegExp('^' + rule + '$'))\r\n}\r\n\r\n/**\r\n * 解析默认格式\r\n */\r\nfunction parseDefaultRules (str) {\r\n var matchRest, resMaps = {}\r\n for (var i = 0, dfrLen = defaulParseREs.length; i < dfrLen; i++) {\r\n matchRest = str.match(defaulParseREs[i])\r\n if (matchRest) {\r\n resMaps.y = matchRest[1]\r\n resMaps.M = matchRest[2]\r\n resMaps.d = matchRest[3]\r\n resMaps.H = matchRest[4]\r\n resMaps.m = matchRest[5]\r\n resMaps.s = matchRest[6]\r\n resMaps.S = matchRest[7]\r\n resMaps.Z = matchRest[8]\r\n break\r\n }\r\n }\r\n return resMaps\r\n}\r\n\r\nvar customParseStrs = [\r\n ['yyyy', d3or4],\r\n ['yy', d2],\r\n ['MM', d2],\r\n ['M', d1or2],\r\n ['dd', d2],\r\n ['d', d1or2],\r\n ['HH', d2],\r\n ['H', d1or2],\r\n ['mm', d2],\r\n ['m', d1or2],\r\n ['ss', d2],\r\n ['s', d1or2],\r\n ['SSS', getParseRule(3)],\r\n ['S', d1or7],\r\n ['Z', dzZ]\r\n]\r\nvar parseRuleMaps = {}\r\nvar parseRuleKeys = ['\\\\[([^\\\\]]+)\\\\]']\r\n\r\nfor (var i = 0; i < customParseStrs.length; i++) {\r\n var itemRule = customParseStrs[i]\r\n parseRuleMaps[itemRule[0]] = itemRule[1] + '?'\r\n parseRuleKeys.push(itemRule[0])\r\n}\r\n\r\nvar customParseRes = new RegExp(parseRuleKeys.join('|'), 'g')\r\nvar cacheFormatMaps = {}\r\n\r\n/**\r\n * 解析自定义格式\r\n */\r\nfunction parseCustomRules (str, format) {\r\n var cacheItem = cacheFormatMaps[format]\r\n if (!cacheItem) {\r\n var posIndexs = []\r\n var re = format.replace(/([$(){}*+.?\\\\^|])/g, \"\\\\$1\").replace(customParseRes, function (text, val) {\r\n var firstChar = text.charAt(0)\r\n // 如果为转义符号:[关键字]\r\n if (firstChar === '[') {\r\n return val\r\n }\r\n posIndexs.push(firstChar)\r\n return parseRuleMaps[text]\r\n })\r\n cacheItem = cacheFormatMaps[format] = {\r\n _i: posIndexs,\r\n _r: new RegExp(re)\r\n }\r\n }\r\n var resMaps = {}\r\n var matchRest = str.match(cacheItem._r)\r\n if (matchRest) {\r\n var _i = cacheItem._i\r\n for (var i = 1, len = matchRest.length; i < len; i++) {\r\n resMaps[_i[i - 1]] = matchRest[i]\r\n }\r\n return resMaps\r\n }\r\n return resMaps\r\n}\r\n\r\n/**\r\n * 解析时区\r\n */\r\nfunction parseTimeZone (resMaps) {\r\n // 如果为UTC 时间\r\n if (/^[zZ]/.test(resMaps.Z)) {\r\n return new Date(helperGetUTCDateTime(resMaps))\r\n } else {\r\n // 如果指定时区,时区转换\r\n var matchRest = resMaps.Z.match(/([-+])(\\d{2}):?(\\d{2})/)\r\n if (matchRest) {\r\n return new Date(helperGetUTCDateTime(resMaps) - (matchRest[1] === '-' ? -1 : 1) * staticParseInt(matchRest[2]) * 3600000 + staticParseInt(matchRest[3]) * 60000)\r\n }\r\n }\r\n return new Date('')\r\n}\r\n\r\n/**\r\n * 字符串转为日期\r\n *\r\n * @param {String/Number/Date} str 日期或数字\r\n * @param {String} format 解析日期格式(yyyy年份、MM月份、dd天、hh(12)HH(24)小时、mm分钟、ss秒、SSS毫秒、Z时区)\r\n * @return {Date}\r\n */\r\nfunction toStringDate (str, format) {\r\n if (str) {\r\n var isDType = isDate(str)\r\n if (isDType || (!format && /^[0-9]{11,15}$/.test(str))) {\r\n return new Date(isDType ? helperGetDateTime(str) : staticParseInt(str))\r\n }\r\n if (isString(str)) {\r\n var resMaps = format ? parseCustomRules(str, format) : parseDefaultRules(str)\r\n if (resMaps.y) {\r\n if (resMaps.M) {\r\n resMaps.M = toParseNum(resMaps.M) - 1\r\n }\r\n if (resMaps.S) {\r\n // 如果7位则是微秒,只精确到3位毫秒\r\n resMaps.S = toParseMs(toParseNum(resMaps.S.substring(0, 3)))\r\n }\r\n if (resMaps.Z) {\r\n return parseTimeZone(resMaps)\r\n } else {\r\n return new Date(resMaps.y, resMaps.M || 0, resMaps.d || 1, resMaps.H || 0, resMaps.m || 0, resMaps.s || 0, resMaps.S || 0)\r\n }\r\n }\r\n }\r\n }\r\n return new Date('')\r\n}\r\n\r\nmodule.exports = toStringDate\r\n"],"sourceRoot":""}