import { hooks } from '../utils/hooks';
|
import isUndefined from '../utils/is-undefined';
|
import getParsingFlags from '../create/parsing-flags';
|
|
// Plugins that add properties should also add the key here (null value),
|
// so we can properly clone ourselves.
|
var momentProperties = (hooks.momentProperties = []),
|
updateInProgress = false;
|
|
export function copyConfig(to, from) {
|
var i, prop, val;
|
|
if (!isUndefined(from._isAMomentObject)) {
|
to._isAMomentObject = from._isAMomentObject;
|
}
|
if (!isUndefined(from._i)) {
|
to._i = from._i;
|
}
|
if (!isUndefined(from._f)) {
|
to._f = from._f;
|
}
|
if (!isUndefined(from._l)) {
|
to._l = from._l;
|
}
|
if (!isUndefined(from._strict)) {
|
to._strict = from._strict;
|
}
|
if (!isUndefined(from._tzm)) {
|
to._tzm = from._tzm;
|
}
|
if (!isUndefined(from._isUTC)) {
|
to._isUTC = from._isUTC;
|
}
|
if (!isUndefined(from._offset)) {
|
to._offset = from._offset;
|
}
|
if (!isUndefined(from._pf)) {
|
to._pf = getParsingFlags(from);
|
}
|
if (!isUndefined(from._locale)) {
|
to._locale = from._locale;
|
}
|
|
if (momentProperties.length > 0) {
|
for (i = 0; i < momentProperties.length; i++) {
|
prop = momentProperties[i];
|
val = from[prop];
|
if (!isUndefined(val)) {
|
to[prop] = val;
|
}
|
}
|
}
|
|
return to;
|
}
|
|
// Moment prototype object
|
export function Moment(config) {
|
copyConfig(this, config);
|
this._d = new Date(config._d != null ? config._d.getTime() : NaN);
|
if (!this.isValid()) {
|
this._d = new Date(NaN);
|
}
|
// Prevent infinite loop in case updateOffset creates new moment
|
// objects.
|
if (updateInProgress === false) {
|
updateInProgress = true;
|
hooks.updateOffset(this);
|
updateInProgress = false;
|
}
|
}
|
|
export function isMoment(obj) {
|
return (
|
obj instanceof Moment || (obj != null && obj._isAMomentObject != null)
|
);
|
}
|