-
Notifications
You must be signed in to change notification settings - Fork 121
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
7dc71d7
commit 60915cd
Showing
5 changed files
with
5,253 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,274 @@ | ||
'use strict'; | ||
|
||
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { | ||
return typeof obj; | ||
} : function (obj) { | ||
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; | ||
}; | ||
|
||
function _toConsumableArray(arr) { | ||
if (Array.isArray(arr)) { | ||
for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { | ||
arr2[i] = arr[i]; | ||
}return arr2; | ||
} else { | ||
return Array.from(arr); | ||
} | ||
} | ||
|
||
module.exports = { | ||
install: function install(Vue, options) { | ||
var moment = options && options.moment ? options.moment : require('moment'); | ||
|
||
Object.defineProperties(Vue.prototype, { | ||
$moment: { | ||
get: function get() { | ||
return moment; | ||
} | ||
} | ||
}); | ||
|
||
Vue.moment = moment; | ||
|
||
Vue.filter('moment', function () { | ||
var arguments$1 = arguments; | ||
|
||
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { | ||
args[_key] = arguments$1[_key]; | ||
} | ||
|
||
args = Array.prototype.slice.call(args); | ||
var input = args.shift(); | ||
var date = void 0; | ||
|
||
if (Array.isArray(input) && typeof input[0] === 'string') { | ||
// If input is array, assume we're being passed a format pattern to parse against. | ||
// Format pattern will accept an array of potential formats to parse against. | ||
// Date string should be at [0], format pattern(s) should be at [1] | ||
date = moment(input[0], input[1], true); | ||
} else if (typeof input === 'number') { | ||
if (input.toString().length < 12) { | ||
// If input is an integer with fewer than 12 digits, assume Unix seconds... | ||
date = moment.unix(input); | ||
} else { | ||
// ..otherwise, assume milliseconds. | ||
date = moment(input); | ||
} | ||
} else { | ||
// Otherwise, throw the input at moment and see what happens... | ||
date = moment(input); | ||
} | ||
|
||
if (!input || !date.isValid()) { | ||
// Log a warning if moment couldn't reconcile the input. Better than throwing an error? | ||
console.warn('Could not build a valid `moment` object from input.'); | ||
return input; | ||
} | ||
|
||
function parse() { | ||
var arguments$1 = arguments; | ||
|
||
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { | ||
args[_key2] = arguments$1[_key2]; | ||
} | ||
|
||
args = Array.prototype.slice.call(args); | ||
var method = args.shift(); | ||
|
||
switch (method) { | ||
case 'add': | ||
{ | ||
/* | ||
* Mutates the original moment by adding time. | ||
* http://momentjs.com/docs/#/manipulating/add/ | ||
*/ | ||
|
||
var addends = args.shift().split(',').map(Function.prototype.call, String.prototype.trim); | ||
var obj = {}; | ||
|
||
for (var n = 0; n < addends.length; n++) { | ||
var addend = addends[n].split(' '); | ||
obj[addend[1]] = addend[0]; | ||
} | ||
date.add(obj); | ||
break; | ||
} | ||
|
||
case 'subtract': | ||
{ | ||
/* | ||
* Mutates the original moment by subtracting time. | ||
* http://momentjs.com/docs/#/manipulating/subtract/ | ||
*/ | ||
|
||
var subtrahends = args.shift().split(',').map(Function.prototype.call, String.prototype.trim); | ||
var _obj = {}; | ||
|
||
for (var _n = 0; _n < subtrahends.length; _n++) { | ||
var subtrahend = subtrahends[_n].split(' '); | ||
_obj[subtrahend[1]] = subtrahend[0]; | ||
} | ||
date.subtract(_obj); | ||
break; | ||
} | ||
|
||
case 'from': | ||
{ | ||
/* | ||
* Display a moment in relative time, either from now or from a specified date. | ||
* http://momentjs.com/docs/#/displaying/fromnow/ | ||
*/ | ||
|
||
var from = 'now'; | ||
var removeSuffix = false; | ||
|
||
if (args[0] === 'now') { args.shift(); } | ||
// If valid, assume it is a date we want the output computed against. | ||
if (moment(args[0]).isValid()) { from = moment(args.shift()); } | ||
|
||
if (args[0] === true) { | ||
args.shift(); | ||
removeSuffix = true; | ||
} | ||
|
||
if (from !== 'now') { | ||
date = date.from(from, removeSuffix); | ||
} else { | ||
date = date.fromNow(removeSuffix); | ||
} | ||
break; | ||
} | ||
|
||
case 'diff': | ||
{ | ||
/* | ||
* Mutates the original moment by doing a difference with another date. | ||
* http://momentjs.com/docs/#/displaying/difference/ | ||
*/ | ||
|
||
var referenceTime = moment(); | ||
var units = ''; | ||
var float = false; | ||
|
||
if (moment(args[0]).isValid()) { | ||
// If valid, assume it is a date we want the output computed against. | ||
referenceTime = moment(args.shift()); | ||
} else if (args[0] === null || args[0] === 'now') { | ||
// If null or 'now', remove argument and proceed with default referenceTime. | ||
args.shift(); | ||
} | ||
|
||
if (args[0]) { units = args.shift(); } | ||
|
||
if (args[0] === true) { float = args.shift(); } | ||
|
||
date = date.diff(referenceTime, units, float); | ||
break; | ||
} | ||
|
||
case 'calendar': | ||
{ | ||
/* | ||
* Formats a date with different strings depending on how close | ||
* to a certain date (today by default) the date is. | ||
* http://momentjs.com/docs/#/displaying/calendar-time/ | ||
*/ | ||
|
||
var _referenceTime = moment(); | ||
var formats = {}; | ||
|
||
if (moment(args[0]).isValid()) { | ||
// If valid, assume it is a date we want the output computed against. | ||
_referenceTime = moment(args.shift()); | ||
} else if (args[0] === null || args[0] === 'now') { | ||
// If null or 'now', remove argument and proceed with default referenceTime. | ||
args.shift(); | ||
} | ||
|
||
if (_typeof(args[0]) === 'object') { formats = args.shift(); } | ||
|
||
date = date.calendar(_referenceTime, formats); | ||
break; | ||
} | ||
|
||
case 'utc': | ||
{ | ||
/* | ||
* Mutates the original moment by converting to UTC | ||
* https://momentjs.com/docs/#/manipulating/utc/ | ||
*/ | ||
date.utc(); | ||
break; | ||
} | ||
|
||
case 'timezone': | ||
{ | ||
/* | ||
* Mutates the original moment by converting to a new timezone. | ||
* https://momentjs.com/timezone/docs/#/using-timezones/converting-to-zone/ | ||
*/ | ||
date.tz(args.shift()); | ||
break; | ||
} | ||
|
||
default: | ||
{ | ||
/* | ||
* Formats a date by taking a string of tokens and replacing | ||
* them with their corresponding values. | ||
* http://momentjs.com/docs/#/displaying/format/ | ||
*/ | ||
|
||
var format = method; | ||
date = date.format(format); | ||
} | ||
} | ||
|
||
if (args.length) { parse.apply(parse, args); } | ||
} | ||
|
||
parse.apply(parse, args); | ||
|
||
return date; | ||
}); | ||
|
||
Vue.filter('duration', function () { | ||
var arguments$1 = arguments; | ||
|
||
for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { | ||
args[_key3] = arguments$1[_key3]; | ||
} | ||
|
||
/* | ||
* Basic pass-through filter for leveraging moment.js's ability | ||
* to manipulate and display durations. | ||
* https://momentjs.com/docs/#/durations/ | ||
*/ | ||
args = Array.prototype.slice.call(args); | ||
var input = args.shift(); | ||
var method = args.shift(); | ||
|
||
function createDuration(time) { | ||
if (!Array.isArray(time)) { time = [time]; } | ||
var result = moment.duration.apply(moment, _toConsumableArray(time)); | ||
if (!result.isValid()) { console.warn('Could not build a valid `duration` object from input.'); } | ||
return result; | ||
} | ||
var duration = createDuration(input); | ||
|
||
if (method === 'add' || method === 'subtract') { | ||
// Generates a duration object and either adds or subtracts it | ||
// from our original duration. | ||
var durationChange = createDuration(args); | ||
duration[method](durationChange); | ||
} else if (duration && duration[method]) { | ||
var _duration; | ||
|
||
// This gives a full proxy to moment.duration functions. | ||
duration = (_duration = duration)[method].apply(_duration, _toConsumableArray(args)); | ||
} | ||
|
||
return duration; | ||
}); | ||
} | ||
}; |
Oops, something went wrong.