You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					97 lines
				
				2.5 KiB
			
		
		
			
		
	
	
					97 lines
				
				2.5 KiB
			| 
											2 years ago
										 | export default (function (o, c, dayjs) { | ||
|  |   var proto = c.prototype; | ||
|  | 
 | ||
|  |   var isObject = function isObject(obj) { | ||
|  |     return !(obj instanceof Date) && !(obj instanceof Array) && !proto.$utils().u(obj) && obj.constructor.name === 'Object'; | ||
|  |   }; | ||
|  | 
 | ||
|  |   var prettyUnit = function prettyUnit(u) { | ||
|  |     var unit = proto.$utils().p(u); | ||
|  |     return unit === 'date' ? 'day' : unit; | ||
|  |   }; | ||
|  | 
 | ||
|  |   var parseDate = function parseDate(cfg) { | ||
|  |     var date = cfg.date, | ||
|  |         utc = cfg.utc; | ||
|  |     var $d = {}; | ||
|  | 
 | ||
|  |     if (isObject(date)) { | ||
|  |       if (!Object.keys(date).length) { | ||
|  |         return new Date(); | ||
|  |       } | ||
|  | 
 | ||
|  |       var now = utc ? dayjs.utc() : dayjs(); | ||
|  |       Object.keys(date).forEach(function (k) { | ||
|  |         $d[prettyUnit(k)] = date[k]; | ||
|  |       }); | ||
|  |       var d = $d.day || (!$d.year && !($d.month >= 0) ? now.date() : 1); | ||
|  |       var y = $d.year || now.year(); | ||
|  |       var M = $d.month >= 0 ? $d.month : !$d.year && !$d.day ? now.month() : 0; // eslint-disable-line no-nested-ternary,max-len
 | ||
|  | 
 | ||
|  |       var h = $d.hour || 0; | ||
|  |       var m = $d.minute || 0; | ||
|  |       var s = $d.second || 0; | ||
|  |       var ms = $d.millisecond || 0; | ||
|  | 
 | ||
|  |       if (utc) { | ||
|  |         return new Date(Date.UTC(y, M, d, h, m, s, ms)); | ||
|  |       } | ||
|  | 
 | ||
|  |       return new Date(y, M, d, h, m, s, ms); | ||
|  |     } | ||
|  | 
 | ||
|  |     return date; | ||
|  |   }; | ||
|  | 
 | ||
|  |   var oldParse = proto.parse; | ||
|  | 
 | ||
|  |   proto.parse = function (cfg) { | ||
|  |     cfg.date = parseDate.bind(this)(cfg); | ||
|  |     oldParse.bind(this)(cfg); | ||
|  |   }; | ||
|  | 
 | ||
|  |   var oldSet = proto.set; | ||
|  |   var oldAdd = proto.add; | ||
|  |   var oldSubtract = proto.subtract; | ||
|  | 
 | ||
|  |   var callObject = function callObject(call, argument, string, offset) { | ||
|  |     if (offset === void 0) { | ||
|  |       offset = 1; | ||
|  |     } | ||
|  | 
 | ||
|  |     var keys = Object.keys(argument); | ||
|  |     var chain = this; | ||
|  |     keys.forEach(function (key) { | ||
|  |       chain = call.bind(chain)(argument[key] * offset, key); | ||
|  |     }); | ||
|  |     return chain; | ||
|  |   }; | ||
|  | 
 | ||
|  |   proto.set = function (unit, value) { | ||
|  |     value = value === undefined ? unit : value; | ||
|  | 
 | ||
|  |     if (unit.constructor.name === 'Object') { | ||
|  |       return callObject.bind(this)(function (i, s) { | ||
|  |         return oldSet.bind(this)(s, i); | ||
|  |       }, value, unit); | ||
|  |     } | ||
|  | 
 | ||
|  |     return oldSet.bind(this)(unit, value); | ||
|  |   }; | ||
|  | 
 | ||
|  |   proto.add = function (value, unit) { | ||
|  |     if (value.constructor.name === 'Object') { | ||
|  |       return callObject.bind(this)(oldAdd, value, unit); | ||
|  |     } | ||
|  | 
 | ||
|  |     return oldAdd.bind(this)(value, unit); | ||
|  |   }; | ||
|  | 
 | ||
|  |   proto.subtract = function (value, unit) { | ||
|  |     if (value.constructor.name === 'Object') { | ||
|  |       return callObject.bind(this)(oldAdd, value, unit, -1); | ||
|  |     } | ||
|  | 
 | ||
|  |     return oldSubtract.bind(this)(value, unit); | ||
|  |   }; | ||
|  | }); |