UNPKG

@fullcalendar/angular

Version:

The official Angular component for FullCalendar

40 lines 4.24 kB
const hasOwnProperty = Object.prototype.hasOwnProperty; /* Really simple clone utility. Only copies plain arrays, objects, and Dates. Transfers everything else as-is. Wanted to use a third-party lib, but none did exactly this. */ export function deepCopy(input) { if (Array.isArray(input)) { return input.map(deepCopy); } else if (input instanceof Date) { return new Date(input.valueOf()); } else if (typeof input === 'object' && input) { // non-null object return mapHash(input, deepCopy); } else { // everything else (null, function, etc) return input; } } export function shallowCopy(val) { if (typeof val === 'object') { if (Array.isArray(val)) { val = Array.prototype.slice.call(val); } else if (val) { // non-null val = { ...val }; } } return val; } export function mapHash(input, func) { const output = {}; for (const key in input) { if (hasOwnProperty.call(input, key)) { output[key] = func(input[key], key); } } return output; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL3NyYy91dGlscy9vYmoudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUM7QUFFdkQ7OztFQUdFO0FBQ0YsTUFBTSxVQUFVLFFBQVEsQ0FBQyxLQUFVO0lBRWpDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN4QixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7S0FFNUI7U0FBTSxJQUFJLEtBQUssWUFBWSxJQUFJLEVBQUU7UUFDaEMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztLQUVsQztTQUFNLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssRUFBRSxFQUFFLGtCQUFrQjtRQUNqRSxPQUFPLE9BQU8sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7S0FFakM7U0FBTSxFQUFFLHdDQUF3QztRQUMvQyxPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQztBQUdELE1BQU0sVUFBVSxXQUFXLENBQUMsR0FBUTtJQUNsQyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtRQUMzQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdEIsR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN2QzthQUFNLElBQUksR0FBRyxFQUFFLEVBQUUsV0FBVztZQUMzQixHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDO1NBQ2xCO0tBQ0Y7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFHRCxNQUFNLFVBQVUsT0FBTyxDQUFDLEtBQVUsRUFBRSxJQUFTO0lBQzNDLE1BQU0sTUFBTSxHQUEyQixFQUFFLENBQUM7SUFFMUMsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQUU7UUFDdkIsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNuQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNyQztLQUNGO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuY29uc3QgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG4vKlxuUmVhbGx5IHNpbXBsZSBjbG9uZSB1dGlsaXR5LiBPbmx5IGNvcGllcyBwbGFpbiBhcnJheXMsIG9iamVjdHMsIGFuZCBEYXRlcy4gVHJhbnNmZXJzIGV2ZXJ5dGhpbmcgZWxzZSBhcy1pcy5cbldhbnRlZCB0byB1c2UgYSB0aGlyZC1wYXJ0eSBsaWIsIGJ1dCBub25lIGRpZCBleGFjdGx5IHRoaXMuXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZXBDb3B5KGlucHV0OiBhbnkpOiBhbnkge1xuXG4gIGlmIChBcnJheS5pc0FycmF5KGlucHV0KSkge1xuICAgIHJldHVybiBpbnB1dC5tYXAoZGVlcENvcHkpO1xuXG4gIH0gZWxzZSBpZiAoaW5wdXQgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGlucHV0LnZhbHVlT2YoKSk7XG5cbiAgfSBlbHNlIGlmICh0eXBlb2YgaW5wdXQgPT09ICdvYmplY3QnICYmIGlucHV0KSB7IC8vIG5vbi1udWxsIG9iamVjdFxuICAgIHJldHVybiBtYXBIYXNoKGlucHV0LCBkZWVwQ29weSk7XG5cbiAgfSBlbHNlIHsgLy8gZXZlcnl0aGluZyBlbHNlIChudWxsLCBmdW5jdGlvbiwgZXRjKVxuICAgIHJldHVybiBpbnB1dDtcbiAgfVxufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBzaGFsbG93Q29weSh2YWw6IGFueSk6IGFueSB7XG4gIGlmICh0eXBlb2YgdmFsID09PSAnb2JqZWN0Jykge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgIHZhbCA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHZhbCk7XG4gICAgfSBlbHNlIGlmICh2YWwpIHsgLy8gbm9uLW51bGxcbiAgICAgIHZhbCA9IHsgLi4udmFsIH07XG4gICAgfVxuICB9XG4gIHJldHVybiB2YWw7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcEhhc2goaW5wdXQ6IGFueSwgZnVuYzogYW55KTogYW55IHtcbiAgY29uc3Qgb3V0cHV0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gaW5wdXQpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChpbnB1dCwga2V5KSkge1xuICAgICAgb3V0cHV0W2tleV0gPSBmdW5jKGlucHV0W2tleV0sIGtleSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn1cbiJdfQ==