| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | 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);  };});
 |