| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 | import { MILLISECONDS_A_MINUTE, MIN } from '../../constant';var REGEX_VALID_OFFSET_FORMAT = /[+-]\d\d(?::?\d\d)?/g;var REGEX_OFFSET_HOURS_MINUTES_FORMAT = /([+-]|\d\d)/g;function offsetFromString(value) {  if (value === void 0) {    value = '';  }  var offset = value.match(REGEX_VALID_OFFSET_FORMAT);  if (!offset) {    return null;  }  var _ref = ("" + offset[0]).match(REGEX_OFFSET_HOURS_MINUTES_FORMAT) || ['-', 0, 0],      indicator = _ref[0],      hoursOffset = _ref[1],      minutesOffset = _ref[2];  var totalOffsetInMinutes = +hoursOffset * 60 + +minutesOffset;  if (totalOffsetInMinutes === 0) {    return 0;  }  return indicator === '+' ? totalOffsetInMinutes : -totalOffsetInMinutes;}export default (function (option, Dayjs, dayjs) {  var proto = Dayjs.prototype;  dayjs.utc = function (date) {    var cfg = {      date: date,      utc: true,      args: arguments    }; // eslint-disable-line prefer-rest-params    return new Dayjs(cfg); // eslint-disable-line no-use-before-define  };  proto.utc = function (keepLocalTime) {    var ins = dayjs(this.toDate(), {      locale: this.$L,      utc: true    });    if (keepLocalTime) {      return ins.add(this.utcOffset(), MIN);    }    return ins;  };  proto.local = function () {    return dayjs(this.toDate(), {      locale: this.$L,      utc: false    });  };  var oldParse = proto.parse;  proto.parse = function (cfg) {    if (cfg.utc) {      this.$u = true;    }    if (!this.$utils().u(cfg.$offset)) {      this.$offset = cfg.$offset;    }    oldParse.call(this, cfg);  };  var oldInit = proto.init;  proto.init = function () {    if (this.$u) {      var $d = this.$d;      this.$y = $d.getUTCFullYear();      this.$M = $d.getUTCMonth();      this.$D = $d.getUTCDate();      this.$W = $d.getUTCDay();      this.$H = $d.getUTCHours();      this.$m = $d.getUTCMinutes();      this.$s = $d.getUTCSeconds();      this.$ms = $d.getUTCMilliseconds();    } else {      oldInit.call(this);    }  };  var oldUtcOffset = proto.utcOffset;  proto.utcOffset = function (input, keepLocalTime) {    var _this$$utils = this.$utils(),        u = _this$$utils.u;    if (u(input)) {      if (this.$u) {        return 0;      }      if (!u(this.$offset)) {        return this.$offset;      }      return oldUtcOffset.call(this);    }    if (typeof input === 'string') {      input = offsetFromString(input);      if (input === null) {        return this;      }    }    var offset = Math.abs(input) <= 16 ? input * 60 : input;    var ins = this;    if (keepLocalTime) {      ins.$offset = offset;      ins.$u = input === 0;      return ins;    }    if (input !== 0) {      var localTimezoneOffset = this.$u ? this.toDate().getTimezoneOffset() : -1 * this.utcOffset();      ins = this.local().add(offset + localTimezoneOffset, MIN);      ins.$offset = offset;      ins.$x.$localOffset = localTimezoneOffset;    } else {      ins = this.utc();    }    return ins;  };  var oldFormat = proto.format;  var UTC_FORMAT_DEFAULT = 'YYYY-MM-DDTHH:mm:ss[Z]';  proto.format = function (formatStr) {    var str = formatStr || (this.$u ? UTC_FORMAT_DEFAULT : '');    return oldFormat.call(this, str);  };  proto.valueOf = function () {    var addedOffset = !this.$utils().u(this.$offset) ? this.$offset + (this.$x.$localOffset || this.$d.getTimezoneOffset()) : 0;    return this.$d.valueOf() - addedOffset * MILLISECONDS_A_MINUTE;  };  proto.isUTC = function () {    return !!this.$u;  };  proto.toISOString = function () {    return this.toDate().toISOString();  };  proto.toString = function () {    return this.toDate().toUTCString();  };  var oldToDate = proto.toDate;  proto.toDate = function (type) {    if (type === 's' && this.$offset) {      return dayjs(this.format('YYYY-MM-DD HH:mm:ss:SSS')).toDate();    }    return oldToDate.call(this);  };  var oldDiff = proto.diff;  proto.diff = function (input, units, _float) {    if (input && this.$u === input.$u) {      return oldDiff.call(this, input, units, _float);    }    var localThis = this.local();    var localInput = dayjs(input).local();    return oldDiff.call(localThis, localInput, units, _float);  };});
 |