| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- '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;
- });
- }
- };
|