diff --git a/dist/angular-timer.js b/dist/angular-timer.js index e9b8b8f..7dc4a4b 100644 --- a/dist/angular-timer.js +++ b/dist/angular-timer.js @@ -1,5 +1,5 @@ /** - * angular-timer - v1.3.5 - 2017-03-09 11:42 AM + * angular-timer - v1.3.5 - 2017-03-09 2:18 PM * https://github.com/siddii/angular-timer * * Copyright (c) 2017 Adrian Wardell @@ -454,8 +454,9 @@ app.factory('I18nService', function() { this.language = this.fallback; } - //moment init - moment.locale(this.language); // @TODO maybe to remove, it should be handle by the user's application itself, and not inside the directive + // It should be handle by the user's application itself, and not inside the directive + // moment init + // moment.locale(this.language); //human duration init, using it because momentjs does not allow accurate time ( // momentJS: a few moment ago, human duration : 4 seconds ago @@ -477,13 +478,13 @@ app.factory('I18nService', function() { if (typeof this.timeHumanizer != 'undefined'){ time = { - 'millis' : this.timeHumanizer(diffFromAlarm, { units: ["milliseconds"] }), - 'seconds' : this.timeHumanizer(diffFromAlarm, { units: ["seconds"] }), - 'minutes' : this.timeHumanizer(diffFromAlarm, { units: ["minutes", "seconds"] }) , - 'hours' : this.timeHumanizer(diffFromAlarm, { units: ["hours", "minutes", "seconds"] }) , - 'days' : this.timeHumanizer(diffFromAlarm, { units: ["days", "hours", "minutes", "seconds"] }) , - 'months' : this.timeHumanizer(diffFromAlarm, { units: ["months", "days", "hours", "minutes", "seconds"] }) , - 'years' : this.timeHumanizer(diffFromAlarm, { units: ["years", "months", "days", "hours", "minutes", "seconds"] }) + 'millis' : this.timeHumanizer(diffFromAlarm, { units: ["ms"] }), + 'seconds' : this.timeHumanizer(diffFromAlarm, { units: ["s"] }), + 'minutes' : this.timeHumanizer(diffFromAlarm, { units: ["m", "s"] }) , + 'hours' : this.timeHumanizer(diffFromAlarm, { units: ["h", "m", "s"] }) , + 'days' : this.timeHumanizer(diffFromAlarm, { units: ["d", "h", "m", "s"] }) , + 'months' : this.timeHumanizer(diffFromAlarm, { units: ["mo", "d", "h", "m", "s"] }) , + 'years' : this.timeHumanizer(diffFromAlarm, { units: ["y", "mo", "d", "h", "m", "s"] }) }; } else { diff --git a/dist/angular-timer.min.js b/dist/angular-timer.min.js index 2075650..a685077 100644 --- a/dist/angular-timer.min.js +++ b/dist/angular-timer.min.js @@ -1,8 +1,8 @@ /** - * angular-timer - v1.3.5 - 2017-03-09 11:42 AM + * angular-timer - v1.3.5 - 2017-03-09 2:18 PM * https://github.com/siddii/angular-timer * * Copyright (c) 2017 Adrian Wardell * Licensed MIT */ -var timerModule=angular.module("timer",[]).directive("timer",["$compile",function(a){return{restrict:"EA",replace:!1,scope:{interval:"=interval",startTimeAttr:"=startTime",endTimeAttr:"=endTime",countdownattr:"=countdown",finishCallback:"&finishCallback",autoStart:"&autoStart",language:"@?",fallback:"@?",maxTimeUnit:"=",seconds:"=?",minutes:"=?",hours:"=?",days:"=?",months:"=?",years:"=?",secondsS:"=?",minutesS:"=?",hoursS:"=?",daysS:"=?",monthsS:"=?",yearsS:"=?"},controller:["$scope","$element","$attrs","$timeout","I18nService","$interpolate","progressBarService",function(b,c,d,e,f,g,h){function i(){b.timeoutId&&clearTimeout(b.timeoutId)}function j(){var a={};void 0!==d.startTime&&(b.millis=moment().diff(moment(b.startTimeAttr))),a=k.getTimeUnits(b.millis),b.maxTimeUnit&&"day"!==b.maxTimeUnit?"second"===b.maxTimeUnit?(b.seconds=Math.floor(b.millis/1e3),b.minutes=0,b.hours=0,b.days=0,b.months=0,b.years=0):"minute"===b.maxTimeUnit?(b.seconds=Math.floor(b.millis/1e3%60),b.minutes=Math.floor(b.millis/6e4),b.hours=0,b.days=0,b.months=0,b.years=0):"hour"===b.maxTimeUnit?(b.seconds=Math.floor(b.millis/1e3%60),b.minutes=Math.floor(b.millis/6e4%60),b.hours=Math.floor(b.millis/36e5),b.days=0,b.months=0,b.years=0):"month"===b.maxTimeUnit?(b.seconds=Math.floor(b.millis/1e3%60),b.minutes=Math.floor(b.millis/6e4%60),b.hours=Math.floor(b.millis/36e5%24),b.days=Math.floor(b.millis/36e5/24%30),b.months=Math.floor(b.millis/36e5/24/30),b.years=0):"year"===b.maxTimeUnit&&(b.seconds=Math.floor(b.millis/1e3%60),b.minutes=Math.floor(b.millis/6e4%60),b.hours=Math.floor(b.millis/36e5%24),b.days=Math.floor(b.millis/36e5/24%30),b.months=Math.floor(b.millis/36e5/24/30%12),b.years=Math.floor(b.millis/36e5/24/365)):(b.seconds=Math.floor(b.millis/1e3%60),b.minutes=Math.floor(b.millis/6e4%60),b.hours=Math.floor(b.millis/36e5%24),b.days=Math.floor(b.millis/36e5/24),b.months=0,b.years=0),b.secondsS=1===b.seconds?"":"s",b.minutesS=1===b.minutes?"":"s",b.hoursS=1===b.hours?"":"s",b.daysS=1===b.days?"":"s",b.monthsS=1===b.months?"":"s",b.yearsS=1===b.years?"":"s",b.secondUnit=a.seconds,b.minuteUnit=a.minutes,b.hourUnit=a.hours,b.dayUnit=a.days,b.monthUnit=a.months,b.yearUnit=a.years,b.sseconds=b.seconds<10?"0"+b.seconds:b.seconds,b.mminutes=b.minutes<10?"0"+b.minutes:b.minutes,b.hhours=b.hours<10?"0"+b.hours:b.hours,b.ddays=b.days<10?"0"+b.days:b.days,b.mmonths=b.months<10?"0"+b.months:b.months,b.yyears=b.years<10?"0"+b.years:b.years}"function"!=typeof String.prototype.trim&&(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}),b.autoStart=d.autoStart||d.autostart,b.language=b.language||"en",b.fallback=b.fallback||"en",b.$watch("language",function(a,c){void 0!==a&&k.init(a,b.fallback)});var k=new f;k.init(b.language,b.fallback),b.displayProgressBar=0,b.displayProgressActive="active",0===c.html().trim().length?c.append(a(""+g.startSymbol()+"millis"+g.endSymbol()+"")(b)):c.append(a(c.contents())(b)),b.startTime=null,b.endTime=null,b.timeoutId=null,b.countdown=angular.isNumber(b.countdownattr)&&parseInt(b.countdownattr,10)>=0?parseInt(b.countdownattr,10):void 0,b.isRunning=!1,b.$on("timer-start",function(){b.start()}),b.$on("timer-resume",function(){b.resume()}),b.$on("timer-stop",function(){b.stop()}),b.$on("timer-clear",function(){b.clear()}),b.$on("timer-reset",function(){b.reset()}),b.$on("timer-set-countdown",function(a,c){b.countdown=c}),b.$watch("startTimeAttr",function(a,c){a!==c&&b.isRunning&&b.start()}),b.$watch("endTimeAttr",function(a,c){a!==c&&b.isRunning&&b.start()}),b.start=function(){b.startTime=b.startTimeAttr?moment(b.startTimeAttr):moment(),b.endTime=b.endTimeAttr?moment(b.endTimeAttr):null,angular.isNumber(b.countdown)||(b.countdown=angular.isNumber(b.countdownattr)&&parseInt(b.countdownattr,10)>0?parseInt(b.countdownattr,10):void 0),i(),l(),b.isRunning=!0,b.$emit("timer-started",{timeoutId:b.timeoutId,millis:b.millis,seconds:b.seconds,minutes:b.minutes,hours:b.hours,days:b.days})},b.resume=function(){i(),b.countdownattr&&(b.countdown+=1),b.startTime=moment().diff(moment(b.stoppedTime).diff(moment(b.startTime))),l(),b.isRunning=!0,b.$emit("timer-started",{timeoutId:b.timeoutId,millis:b.millis,seconds:b.seconds,minutes:b.minutes,hours:b.hours,days:b.days})},b.stop=b.pause=function(){var a=b.timeoutId;b.clear(),b.$emit("timer-stopped",{timeoutId:a,millis:b.millis,seconds:b.seconds,minutes:b.minutes,hours:b.hours,days:b.days})},b.clear=function(){b.stoppedTime=moment(),i(),b.timeoutId=null,b.isRunning=!1},b.reset=function(){b.startTime=b.startTimeAttr?moment(b.startTimeAttr):moment(),b.endTime=b.endTimeAttr?moment(b.endTimeAttr):null,b.countdown=angular.isNumber(b.countdownattr)&&parseInt(b.countdownattr,10)>0?parseInt(b.countdownattr,10):void 0,i(),l(),b.isRunning=!1,b.clear(),b.$emit("timer-reset",{timeoutId:timeoutId,millis:b.millis,seconds:b.seconds,minutes:b.minutes,hours:b.hours,days:b.days})},c.bind("$destroy",function(){i(),b.isRunning=!1}),b.countdownattr?(b.millis=1e3*b.countdownattr,b.addCDSeconds=function(a){b.countdown+=a,b.isRunning||b.start()},b.$on("timer-add-cd-seconds",function(a,c){b.addCDSeconds(c)}),b.$on("timer-set-countdown-seconds",function(a,c){b.isRunning||b.clear(),b.countdown=c,b.millis=1e3*c,j()})):b.millis=0,j();var l=function m(){var a=null;b.millis=moment().diff(b.startTime);var c=b.millis%1e3;return b.endTimeAttr&&(a=b.endTimeAttr,b.millis=moment(b.endTime).diff(moment()),c=b.interval-b.millis%1e3),b.countdownattr&&(a=b.countdownattr,b.millis=1e3*b.countdown),b.millis<0?(b.stop(),b.millis=0,j(),void(b.finishCallback&&b.$eval(b.finishCallback))):(j(),b.timeoutId=setTimeout(function(){m(),b.$apply()},b.interval-c),b.$emit("timer-tick",{timeoutId:b.timeoutId,millis:b.millis,seconds:b.seconds,minutes:b.minutes,hours:b.hours,days:b.days}),b.countdown>0?b.countdown--:b.countdown<=0&&(b.stop(),b.finishCallback&&b.$eval(b.finishCallback)),void(null!==a&&(b.progressBar=h.calculateProgressBar(b.startTime,b.millis,b.endTime,b.countdownattr),100===b.progressBar&&(b.displayProgressActive=""))))};(void 0===b.autoStart||b.autoStart===!0)&&b.start()}]}}]).directive("timerControls",function(){return{restrict:"EA",scope:!0,controller:["$scope",function(a){a.timerStatus="reset",a.$on("timer-started",function(){a.timerStatus="started"}),a.$on("timer-stopped",function(){a.timerStatus="stopped"}),a.$on("timer-reset",function(){a.timerStatus="reset"}),a.timerStart=function(){a.$broadcast("timer-start")},a.timerStop=function(){a.$broadcast("timer-stop")},a.timerResume=function(){a.$broadcast("timer-resume")},a.timerToggle=function(){switch(a.timerStatus){case"started":a.timerStop();break;case"stopped":a.timerResume();break;case"reset":a.timerStart()}},a.timerAddCDSeconds=function(b){a.$broadcast("timer-add-cd-seconds",b)}}]}});"undefined"!=typeof module&&"undefined"!=typeof exports&&module.exports===exports&&(module.exports=timerModule);var app=angular.module("timer");app.factory("I18nService",function(){var a=function(){};return a.prototype.language="en",a.prototype.fallback="en",a.prototype.timeHumanizer={},a.prototype.init=function(a,b){var c=humanizeDuration.getSupportedLanguages();this.fallback=void 0!==b?b:"en",-1===c.indexOf(b)&&(this.fallback="en"),this.language=a,-1===c.indexOf(a)&&(this.language=this.fallback),moment.locale(this.language),this.timeHumanizer=humanizeDuration.humanizer({language:this.language,halfUnit:!1})},a.prototype.getTimeUnits=function(a){var b=1e3*Math.round(a/1e3),c={};return"undefined"!=typeof this.timeHumanizer?c={millis:this.timeHumanizer(b,{units:["milliseconds"]}),seconds:this.timeHumanizer(b,{units:["seconds"]}),minutes:this.timeHumanizer(b,{units:["minutes","seconds"]}),hours:this.timeHumanizer(b,{units:["hours","minutes","seconds"]}),days:this.timeHumanizer(b,{units:["days","hours","minutes","seconds"]}),months:this.timeHumanizer(b,{units:["months","days","hours","minutes","seconds"]}),years:this.timeHumanizer(b,{units:["years","months","days","hours","minutes","seconds"]})}:console.error('i18nService has not been initialized. You must call i18nService.init("en") for example'),c},a});var app=angular.module("timer");app.factory("progressBarService",function(){var a=function(){};return a.prototype.calculateProgressBar=function(a,b,c,d){var e,f,g=0;return b/=1e3,null!==c?(e=moment(c),f=e.diff(a,"seconds"),g=100*b/f):g=100*b/d,g=100-g,g=Math.round(10*g)/10,g>100&&(g=100),g},new a}); \ No newline at end of file +var timerModule=angular.module("timer",[]).directive("timer",["$compile",function(a){return{restrict:"EA",replace:!1,scope:{interval:"=interval",startTimeAttr:"=startTime",endTimeAttr:"=endTime",countdownattr:"=countdown",finishCallback:"&finishCallback",autoStart:"&autoStart",language:"@?",fallback:"@?",maxTimeUnit:"=",seconds:"=?",minutes:"=?",hours:"=?",days:"=?",months:"=?",years:"=?",secondsS:"=?",minutesS:"=?",hoursS:"=?",daysS:"=?",monthsS:"=?",yearsS:"=?"},controller:["$scope","$element","$attrs","$timeout","I18nService","$interpolate","progressBarService",function(b,c,d,e,f,g,h){function i(){b.timeoutId&&clearTimeout(b.timeoutId)}function j(){var a={};void 0!==d.startTime&&(b.millis=moment().diff(moment(b.startTimeAttr))),a=k.getTimeUnits(b.millis),b.maxTimeUnit&&"day"!==b.maxTimeUnit?"second"===b.maxTimeUnit?(b.seconds=Math.floor(b.millis/1e3),b.minutes=0,b.hours=0,b.days=0,b.months=0,b.years=0):"minute"===b.maxTimeUnit?(b.seconds=Math.floor(b.millis/1e3%60),b.minutes=Math.floor(b.millis/6e4),b.hours=0,b.days=0,b.months=0,b.years=0):"hour"===b.maxTimeUnit?(b.seconds=Math.floor(b.millis/1e3%60),b.minutes=Math.floor(b.millis/6e4%60),b.hours=Math.floor(b.millis/36e5),b.days=0,b.months=0,b.years=0):"month"===b.maxTimeUnit?(b.seconds=Math.floor(b.millis/1e3%60),b.minutes=Math.floor(b.millis/6e4%60),b.hours=Math.floor(b.millis/36e5%24),b.days=Math.floor(b.millis/36e5/24%30),b.months=Math.floor(b.millis/36e5/24/30),b.years=0):"year"===b.maxTimeUnit&&(b.seconds=Math.floor(b.millis/1e3%60),b.minutes=Math.floor(b.millis/6e4%60),b.hours=Math.floor(b.millis/36e5%24),b.days=Math.floor(b.millis/36e5/24%30),b.months=Math.floor(b.millis/36e5/24/30%12),b.years=Math.floor(b.millis/36e5/24/365)):(b.seconds=Math.floor(b.millis/1e3%60),b.minutes=Math.floor(b.millis/6e4%60),b.hours=Math.floor(b.millis/36e5%24),b.days=Math.floor(b.millis/36e5/24),b.months=0,b.years=0),b.secondsS=1===b.seconds?"":"s",b.minutesS=1===b.minutes?"":"s",b.hoursS=1===b.hours?"":"s",b.daysS=1===b.days?"":"s",b.monthsS=1===b.months?"":"s",b.yearsS=1===b.years?"":"s",b.secondUnit=a.seconds,b.minuteUnit=a.minutes,b.hourUnit=a.hours,b.dayUnit=a.days,b.monthUnit=a.months,b.yearUnit=a.years,b.sseconds=b.seconds<10?"0"+b.seconds:b.seconds,b.mminutes=b.minutes<10?"0"+b.minutes:b.minutes,b.hhours=b.hours<10?"0"+b.hours:b.hours,b.ddays=b.days<10?"0"+b.days:b.days,b.mmonths=b.months<10?"0"+b.months:b.months,b.yyears=b.years<10?"0"+b.years:b.years}"function"!=typeof String.prototype.trim&&(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}),b.autoStart=d.autoStart||d.autostart,b.language=b.language||"en",b.fallback=b.fallback||"en",b.$watch("language",function(a,c){void 0!==a&&k.init(a,b.fallback)});var k=new f;k.init(b.language,b.fallback),b.displayProgressBar=0,b.displayProgressActive="active",0===c.html().trim().length?c.append(a(""+g.startSymbol()+"millis"+g.endSymbol()+"")(b)):c.append(a(c.contents())(b)),b.startTime=null,b.endTime=null,b.timeoutId=null,b.countdown=angular.isNumber(b.countdownattr)&&parseInt(b.countdownattr,10)>=0?parseInt(b.countdownattr,10):void 0,b.isRunning=!1,b.$on("timer-start",function(){b.start()}),b.$on("timer-resume",function(){b.resume()}),b.$on("timer-stop",function(){b.stop()}),b.$on("timer-clear",function(){b.clear()}),b.$on("timer-reset",function(){b.reset()}),b.$on("timer-set-countdown",function(a,c){b.countdown=c}),b.$watch("startTimeAttr",function(a,c){a!==c&&b.isRunning&&b.start()}),b.$watch("endTimeAttr",function(a,c){a!==c&&b.isRunning&&b.start()}),b.start=function(){b.startTime=b.startTimeAttr?moment(b.startTimeAttr):moment(),b.endTime=b.endTimeAttr?moment(b.endTimeAttr):null,angular.isNumber(b.countdown)||(b.countdown=angular.isNumber(b.countdownattr)&&parseInt(b.countdownattr,10)>0?parseInt(b.countdownattr,10):void 0),i(),l(),b.isRunning=!0,b.$emit("timer-started",{timeoutId:b.timeoutId,millis:b.millis,seconds:b.seconds,minutes:b.minutes,hours:b.hours,days:b.days})},b.resume=function(){i(),b.countdownattr&&(b.countdown+=1),b.startTime=moment().diff(moment(b.stoppedTime).diff(moment(b.startTime))),l(),b.isRunning=!0,b.$emit("timer-started",{timeoutId:b.timeoutId,millis:b.millis,seconds:b.seconds,minutes:b.minutes,hours:b.hours,days:b.days})},b.stop=b.pause=function(){var a=b.timeoutId;b.clear(),b.$emit("timer-stopped",{timeoutId:a,millis:b.millis,seconds:b.seconds,minutes:b.minutes,hours:b.hours,days:b.days})},b.clear=function(){b.stoppedTime=moment(),i(),b.timeoutId=null,b.isRunning=!1},b.reset=function(){b.startTime=b.startTimeAttr?moment(b.startTimeAttr):moment(),b.endTime=b.endTimeAttr?moment(b.endTimeAttr):null,b.countdown=angular.isNumber(b.countdownattr)&&parseInt(b.countdownattr,10)>0?parseInt(b.countdownattr,10):void 0,i(),l(),b.isRunning=!1,b.clear(),b.$emit("timer-reset",{timeoutId:timeoutId,millis:b.millis,seconds:b.seconds,minutes:b.minutes,hours:b.hours,days:b.days})},c.bind("$destroy",function(){i(),b.isRunning=!1}),b.countdownattr?(b.millis=1e3*b.countdownattr,b.addCDSeconds=function(a){b.countdown+=a,b.isRunning||b.start()},b.$on("timer-add-cd-seconds",function(a,c){b.addCDSeconds(c)}),b.$on("timer-set-countdown-seconds",function(a,c){b.isRunning||b.clear(),b.countdown=c,b.millis=1e3*c,j()})):b.millis=0,j();var l=function m(){var a=null;b.millis=moment().diff(b.startTime);var c=b.millis%1e3;return b.endTimeAttr&&(a=b.endTimeAttr,b.millis=moment(b.endTime).diff(moment()),c=b.interval-b.millis%1e3),b.countdownattr&&(a=b.countdownattr,b.millis=1e3*b.countdown),b.millis<0?(b.stop(),b.millis=0,j(),void(b.finishCallback&&b.$eval(b.finishCallback))):(j(),b.timeoutId=setTimeout(function(){m(),b.$apply()},b.interval-c),b.$emit("timer-tick",{timeoutId:b.timeoutId,millis:b.millis,seconds:b.seconds,minutes:b.minutes,hours:b.hours,days:b.days}),b.countdown>0?b.countdown--:b.countdown<=0&&(b.stop(),b.finishCallback&&b.$eval(b.finishCallback)),void(null!==a&&(b.progressBar=h.calculateProgressBar(b.startTime,b.millis,b.endTime,b.countdownattr),100===b.progressBar&&(b.displayProgressActive=""))))};(void 0===b.autoStart||b.autoStart===!0)&&b.start()}]}}]).directive("timerControls",function(){return{restrict:"EA",scope:!0,controller:["$scope",function(a){a.timerStatus="reset",a.$on("timer-started",function(){a.timerStatus="started"}),a.$on("timer-stopped",function(){a.timerStatus="stopped"}),a.$on("timer-reset",function(){a.timerStatus="reset"}),a.timerStart=function(){a.$broadcast("timer-start")},a.timerStop=function(){a.$broadcast("timer-stop")},a.timerResume=function(){a.$broadcast("timer-resume")},a.timerToggle=function(){switch(a.timerStatus){case"started":a.timerStop();break;case"stopped":a.timerResume();break;case"reset":a.timerStart()}},a.timerAddCDSeconds=function(b){a.$broadcast("timer-add-cd-seconds",b)}}]}});"undefined"!=typeof module&&"undefined"!=typeof exports&&module.exports===exports&&(module.exports=timerModule);var app=angular.module("timer");app.factory("I18nService",function(){var a=function(){};return a.prototype.language="en",a.prototype.fallback="en",a.prototype.timeHumanizer={},a.prototype.init=function(a,b){var c=humanizeDuration.getSupportedLanguages();this.fallback=void 0!==b?b:"en",-1===c.indexOf(b)&&(this.fallback="en"),this.language=a,-1===c.indexOf(a)&&(this.language=this.fallback),this.timeHumanizer=humanizeDuration.humanizer({language:this.language,halfUnit:!1})},a.prototype.getTimeUnits=function(a){var b=1e3*Math.round(a/1e3),c={};return"undefined"!=typeof this.timeHumanizer?c={millis:this.timeHumanizer(b,{units:["ms"]}),seconds:this.timeHumanizer(b,{units:["s"]}),minutes:this.timeHumanizer(b,{units:["m","s"]}),hours:this.timeHumanizer(b,{units:["h","m","s"]}),days:this.timeHumanizer(b,{units:["d","h","m","s"]}),months:this.timeHumanizer(b,{units:["mo","d","h","m","s"]}),years:this.timeHumanizer(b,{units:["y","mo","d","h","m","s"]})}:console.error('i18nService has not been initialized. You must call i18nService.init("en") for example'),c},a});var app=angular.module("timer");app.factory("progressBarService",function(){var a=function(){};return a.prototype.calculateProgressBar=function(a,b,c,d){var e,f,g=0;return b/=1e3,null!==c?(e=moment(c),f=e.diff(a,"seconds"),g=100*b/f):g=100*b/d,g=100-g,g=Math.round(10*g)/10,g>100&&(g=100),g},new a}); \ No newline at end of file diff --git a/dist/assets/js/angular-timer-all.min.js b/dist/assets/js/angular-timer-all.min.js index c5b1ac1..fc41d75 100644 --- a/dist/assets/js/angular-timer-all.min.js +++ b/dist/assets/js/angular-timer-all.min.js @@ -1,11 +1,11 @@ /** - * angular-timer - v1.3.5 - 2017-03-09 11:42 AM + * angular-timer - v1.3.5 - 2017-03-09 2:18 PM * https://github.com/siddii/angular-timer * * Copyright (c) 2017 Adrian Wardell * Licensed MIT */ -var timerModule=angular.module("timer",[]).directive("timer",["$compile",function(a){return{restrict:"EA",replace:!1,scope:{interval:"=interval",startTimeAttr:"=startTime",endTimeAttr:"=endTime",countdownattr:"=countdown",finishCallback:"&finishCallback",autoStart:"&autoStart",language:"@?",fallback:"@?",maxTimeUnit:"=",seconds:"=?",minutes:"=?",hours:"=?",days:"=?",months:"=?",years:"=?",secondsS:"=?",minutesS:"=?",hoursS:"=?",daysS:"=?",monthsS:"=?",yearsS:"=?"},controller:["$scope","$element","$attrs","$timeout","I18nService","$interpolate","progressBarService",function(b,c,d,e,f,g,h){function i(){b.timeoutId&&clearTimeout(b.timeoutId)}function j(){var a={};void 0!==d.startTime&&(b.millis=moment().diff(moment(b.startTimeAttr))),a=k.getTimeUnits(b.millis),b.maxTimeUnit&&"day"!==b.maxTimeUnit?"second"===b.maxTimeUnit?(b.seconds=Math.floor(b.millis/1e3),b.minutes=0,b.hours=0,b.days=0,b.months=0,b.years=0):"minute"===b.maxTimeUnit?(b.seconds=Math.floor(b.millis/1e3%60),b.minutes=Math.floor(b.millis/6e4),b.hours=0,b.days=0,b.months=0,b.years=0):"hour"===b.maxTimeUnit?(b.seconds=Math.floor(b.millis/1e3%60),b.minutes=Math.floor(b.millis/6e4%60),b.hours=Math.floor(b.millis/36e5),b.days=0,b.months=0,b.years=0):"month"===b.maxTimeUnit?(b.seconds=Math.floor(b.millis/1e3%60),b.minutes=Math.floor(b.millis/6e4%60),b.hours=Math.floor(b.millis/36e5%24),b.days=Math.floor(b.millis/36e5/24%30),b.months=Math.floor(b.millis/36e5/24/30),b.years=0):"year"===b.maxTimeUnit&&(b.seconds=Math.floor(b.millis/1e3%60),b.minutes=Math.floor(b.millis/6e4%60),b.hours=Math.floor(b.millis/36e5%24),b.days=Math.floor(b.millis/36e5/24%30),b.months=Math.floor(b.millis/36e5/24/30%12),b.years=Math.floor(b.millis/36e5/24/365)):(b.seconds=Math.floor(b.millis/1e3%60),b.minutes=Math.floor(b.millis/6e4%60),b.hours=Math.floor(b.millis/36e5%24),b.days=Math.floor(b.millis/36e5/24),b.months=0,b.years=0),b.secondsS=1===b.seconds?"":"s",b.minutesS=1===b.minutes?"":"s",b.hoursS=1===b.hours?"":"s",b.daysS=1===b.days?"":"s",b.monthsS=1===b.months?"":"s",b.yearsS=1===b.years?"":"s",b.secondUnit=a.seconds,b.minuteUnit=a.minutes,b.hourUnit=a.hours,b.dayUnit=a.days,b.monthUnit=a.months,b.yearUnit=a.years,b.sseconds=b.seconds<10?"0"+b.seconds:b.seconds,b.mminutes=b.minutes<10?"0"+b.minutes:b.minutes,b.hhours=b.hours<10?"0"+b.hours:b.hours,b.ddays=b.days<10?"0"+b.days:b.days,b.mmonths=b.months<10?"0"+b.months:b.months,b.yyears=b.years<10?"0"+b.years:b.years}"function"!=typeof String.prototype.trim&&(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}),b.autoStart=d.autoStart||d.autostart,b.language=b.language||"en",b.fallback=b.fallback||"en",b.$watch("language",function(a,c){void 0!==a&&k.init(a,b.fallback)});var k=new f;k.init(b.language,b.fallback),b.displayProgressBar=0,b.displayProgressActive="active",0===c.html().trim().length?c.append(a(""+g.startSymbol()+"millis"+g.endSymbol()+"")(b)):c.append(a(c.contents())(b)),b.startTime=null,b.endTime=null,b.timeoutId=null,b.countdown=angular.isNumber(b.countdownattr)&&parseInt(b.countdownattr,10)>=0?parseInt(b.countdownattr,10):void 0,b.isRunning=!1,b.$on("timer-start",function(){b.start()}),b.$on("timer-resume",function(){b.resume()}),b.$on("timer-stop",function(){b.stop()}),b.$on("timer-clear",function(){b.clear()}),b.$on("timer-reset",function(){b.reset()}),b.$on("timer-set-countdown",function(a,c){b.countdown=c}),b.$watch("startTimeAttr",function(a,c){a!==c&&b.isRunning&&b.start()}),b.$watch("endTimeAttr",function(a,c){a!==c&&b.isRunning&&b.start()}),b.start=function(){b.startTime=b.startTimeAttr?moment(b.startTimeAttr):moment(),b.endTime=b.endTimeAttr?moment(b.endTimeAttr):null,angular.isNumber(b.countdown)||(b.countdown=angular.isNumber(b.countdownattr)&&parseInt(b.countdownattr,10)>0?parseInt(b.countdownattr,10):void 0),i(),l(),b.isRunning=!0,b.$emit("timer-started",{timeoutId:b.timeoutId,millis:b.millis,seconds:b.seconds,minutes:b.minutes,hours:b.hours,days:b.days})},b.resume=function(){i(),b.countdownattr&&(b.countdown+=1),b.startTime=moment().diff(moment(b.stoppedTime).diff(moment(b.startTime))),l(),b.isRunning=!0,b.$emit("timer-started",{timeoutId:b.timeoutId,millis:b.millis,seconds:b.seconds,minutes:b.minutes,hours:b.hours,days:b.days})},b.stop=b.pause=function(){var a=b.timeoutId;b.clear(),b.$emit("timer-stopped",{timeoutId:a,millis:b.millis,seconds:b.seconds,minutes:b.minutes,hours:b.hours,days:b.days})},b.clear=function(){b.stoppedTime=moment(),i(),b.timeoutId=null,b.isRunning=!1},b.reset=function(){b.startTime=b.startTimeAttr?moment(b.startTimeAttr):moment(),b.endTime=b.endTimeAttr?moment(b.endTimeAttr):null,b.countdown=angular.isNumber(b.countdownattr)&&parseInt(b.countdownattr,10)>0?parseInt(b.countdownattr,10):void 0,i(),l(),b.isRunning=!1,b.clear(),b.$emit("timer-reset",{timeoutId:timeoutId,millis:b.millis,seconds:b.seconds,minutes:b.minutes,hours:b.hours,days:b.days})},c.bind("$destroy",function(){i(),b.isRunning=!1}),b.countdownattr?(b.millis=1e3*b.countdownattr,b.addCDSeconds=function(a){b.countdown+=a,b.isRunning||b.start()},b.$on("timer-add-cd-seconds",function(a,c){b.addCDSeconds(c)}),b.$on("timer-set-countdown-seconds",function(a,c){b.isRunning||b.clear(),b.countdown=c,b.millis=1e3*c,j()})):b.millis=0,j();var l=function m(){var a=null;b.millis=moment().diff(b.startTime);var c=b.millis%1e3;return b.endTimeAttr&&(a=b.endTimeAttr,b.millis=moment(b.endTime).diff(moment()),c=b.interval-b.millis%1e3),b.countdownattr&&(a=b.countdownattr,b.millis=1e3*b.countdown),b.millis<0?(b.stop(),b.millis=0,j(),void(b.finishCallback&&b.$eval(b.finishCallback))):(j(),b.timeoutId=setTimeout(function(){m(),b.$apply()},b.interval-c),b.$emit("timer-tick",{timeoutId:b.timeoutId,millis:b.millis,seconds:b.seconds,minutes:b.minutes,hours:b.hours,days:b.days}),b.countdown>0?b.countdown--:b.countdown<=0&&(b.stop(),b.finishCallback&&b.$eval(b.finishCallback)),void(null!==a&&(b.progressBar=h.calculateProgressBar(b.startTime,b.millis,b.endTime,b.countdownattr),100===b.progressBar&&(b.displayProgressActive=""))))};(void 0===b.autoStart||b.autoStart===!0)&&b.start()}]}}]).directive("timerControls",function(){return{restrict:"EA",scope:!0,controller:["$scope",function(a){a.timerStatus="reset",a.$on("timer-started",function(){a.timerStatus="started"}),a.$on("timer-stopped",function(){a.timerStatus="stopped"}),a.$on("timer-reset",function(){a.timerStatus="reset"}),a.timerStart=function(){a.$broadcast("timer-start")},a.timerStop=function(){a.$broadcast("timer-stop")},a.timerResume=function(){a.$broadcast("timer-resume")},a.timerToggle=function(){switch(a.timerStatus){case"started":a.timerStop();break;case"stopped":a.timerResume();break;case"reset":a.timerStart()}},a.timerAddCDSeconds=function(b){a.$broadcast("timer-add-cd-seconds",b)}}]}});"undefined"!=typeof module&&"undefined"!=typeof exports&&module.exports===exports&&(module.exports=timerModule);var app=angular.module("timer");app.factory("I18nService",function(){var a=function(){};return a.prototype.language="en",a.prototype.fallback="en",a.prototype.timeHumanizer={},a.prototype.init=function(a,b){var c=humanizeDuration.getSupportedLanguages();this.fallback=void 0!==b?b:"en",-1===c.indexOf(b)&&(this.fallback="en"),this.language=a,-1===c.indexOf(a)&&(this.language=this.fallback),moment.locale(this.language),this.timeHumanizer=humanizeDuration.humanizer({language:this.language,halfUnit:!1})},a.prototype.getTimeUnits=function(a){var b=1e3*Math.round(a/1e3),c={};return"undefined"!=typeof this.timeHumanizer?c={millis:this.timeHumanizer(b,{units:["milliseconds"]}),seconds:this.timeHumanizer(b,{units:["seconds"]}),minutes:this.timeHumanizer(b,{units:["minutes","seconds"]}),hours:this.timeHumanizer(b,{units:["hours","minutes","seconds"]}),days:this.timeHumanizer(b,{units:["days","hours","minutes","seconds"]}),months:this.timeHumanizer(b,{units:["months","days","hours","minutes","seconds"]}),years:this.timeHumanizer(b,{units:["years","months","days","hours","minutes","seconds"]})}:console.error('i18nService has not been initialized. You must call i18nService.init("en") for example'),c},a});var app=angular.module("timer");app.factory("progressBarService",function(){var a=function(){};return a.prototype.calculateProgressBar=function(a,b,c,d){var e,f,g=0;return b/=1e3,null!==c?(e=moment(c),f=e.diff(a,"seconds"),g=100*b/f):g=100*b/d,g=100-g,g=Math.round(10*g)/10,g>100&&(g=100),g},new a}); +var timerModule=angular.module("timer",[]).directive("timer",["$compile",function(a){return{restrict:"EA",replace:!1,scope:{interval:"=interval",startTimeAttr:"=startTime",endTimeAttr:"=endTime",countdownattr:"=countdown",finishCallback:"&finishCallback",autoStart:"&autoStart",language:"@?",fallback:"@?",maxTimeUnit:"=",seconds:"=?",minutes:"=?",hours:"=?",days:"=?",months:"=?",years:"=?",secondsS:"=?",minutesS:"=?",hoursS:"=?",daysS:"=?",monthsS:"=?",yearsS:"=?"},controller:["$scope","$element","$attrs","$timeout","I18nService","$interpolate","progressBarService",function(b,c,d,e,f,g,h){function i(){b.timeoutId&&clearTimeout(b.timeoutId)}function j(){var a={};void 0!==d.startTime&&(b.millis=moment().diff(moment(b.startTimeAttr))),a=k.getTimeUnits(b.millis),b.maxTimeUnit&&"day"!==b.maxTimeUnit?"second"===b.maxTimeUnit?(b.seconds=Math.floor(b.millis/1e3),b.minutes=0,b.hours=0,b.days=0,b.months=0,b.years=0):"minute"===b.maxTimeUnit?(b.seconds=Math.floor(b.millis/1e3%60),b.minutes=Math.floor(b.millis/6e4),b.hours=0,b.days=0,b.months=0,b.years=0):"hour"===b.maxTimeUnit?(b.seconds=Math.floor(b.millis/1e3%60),b.minutes=Math.floor(b.millis/6e4%60),b.hours=Math.floor(b.millis/36e5),b.days=0,b.months=0,b.years=0):"month"===b.maxTimeUnit?(b.seconds=Math.floor(b.millis/1e3%60),b.minutes=Math.floor(b.millis/6e4%60),b.hours=Math.floor(b.millis/36e5%24),b.days=Math.floor(b.millis/36e5/24%30),b.months=Math.floor(b.millis/36e5/24/30),b.years=0):"year"===b.maxTimeUnit&&(b.seconds=Math.floor(b.millis/1e3%60),b.minutes=Math.floor(b.millis/6e4%60),b.hours=Math.floor(b.millis/36e5%24),b.days=Math.floor(b.millis/36e5/24%30),b.months=Math.floor(b.millis/36e5/24/30%12),b.years=Math.floor(b.millis/36e5/24/365)):(b.seconds=Math.floor(b.millis/1e3%60),b.minutes=Math.floor(b.millis/6e4%60),b.hours=Math.floor(b.millis/36e5%24),b.days=Math.floor(b.millis/36e5/24),b.months=0,b.years=0),b.secondsS=1===b.seconds?"":"s",b.minutesS=1===b.minutes?"":"s",b.hoursS=1===b.hours?"":"s",b.daysS=1===b.days?"":"s",b.monthsS=1===b.months?"":"s",b.yearsS=1===b.years?"":"s",b.secondUnit=a.seconds,b.minuteUnit=a.minutes,b.hourUnit=a.hours,b.dayUnit=a.days,b.monthUnit=a.months,b.yearUnit=a.years,b.sseconds=b.seconds<10?"0"+b.seconds:b.seconds,b.mminutes=b.minutes<10?"0"+b.minutes:b.minutes,b.hhours=b.hours<10?"0"+b.hours:b.hours,b.ddays=b.days<10?"0"+b.days:b.days,b.mmonths=b.months<10?"0"+b.months:b.months,b.yyears=b.years<10?"0"+b.years:b.years}"function"!=typeof String.prototype.trim&&(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}),b.autoStart=d.autoStart||d.autostart,b.language=b.language||"en",b.fallback=b.fallback||"en",b.$watch("language",function(a,c){void 0!==a&&k.init(a,b.fallback)});var k=new f;k.init(b.language,b.fallback),b.displayProgressBar=0,b.displayProgressActive="active",0===c.html().trim().length?c.append(a(""+g.startSymbol()+"millis"+g.endSymbol()+"")(b)):c.append(a(c.contents())(b)),b.startTime=null,b.endTime=null,b.timeoutId=null,b.countdown=angular.isNumber(b.countdownattr)&&parseInt(b.countdownattr,10)>=0?parseInt(b.countdownattr,10):void 0,b.isRunning=!1,b.$on("timer-start",function(){b.start()}),b.$on("timer-resume",function(){b.resume()}),b.$on("timer-stop",function(){b.stop()}),b.$on("timer-clear",function(){b.clear()}),b.$on("timer-reset",function(){b.reset()}),b.$on("timer-set-countdown",function(a,c){b.countdown=c}),b.$watch("startTimeAttr",function(a,c){a!==c&&b.isRunning&&b.start()}),b.$watch("endTimeAttr",function(a,c){a!==c&&b.isRunning&&b.start()}),b.start=function(){b.startTime=b.startTimeAttr?moment(b.startTimeAttr):moment(),b.endTime=b.endTimeAttr?moment(b.endTimeAttr):null,angular.isNumber(b.countdown)||(b.countdown=angular.isNumber(b.countdownattr)&&parseInt(b.countdownattr,10)>0?parseInt(b.countdownattr,10):void 0),i(),l(),b.isRunning=!0,b.$emit("timer-started",{timeoutId:b.timeoutId,millis:b.millis,seconds:b.seconds,minutes:b.minutes,hours:b.hours,days:b.days})},b.resume=function(){i(),b.countdownattr&&(b.countdown+=1),b.startTime=moment().diff(moment(b.stoppedTime).diff(moment(b.startTime))),l(),b.isRunning=!0,b.$emit("timer-started",{timeoutId:b.timeoutId,millis:b.millis,seconds:b.seconds,minutes:b.minutes,hours:b.hours,days:b.days})},b.stop=b.pause=function(){var a=b.timeoutId;b.clear(),b.$emit("timer-stopped",{timeoutId:a,millis:b.millis,seconds:b.seconds,minutes:b.minutes,hours:b.hours,days:b.days})},b.clear=function(){b.stoppedTime=moment(),i(),b.timeoutId=null,b.isRunning=!1},b.reset=function(){b.startTime=b.startTimeAttr?moment(b.startTimeAttr):moment(),b.endTime=b.endTimeAttr?moment(b.endTimeAttr):null,b.countdown=angular.isNumber(b.countdownattr)&&parseInt(b.countdownattr,10)>0?parseInt(b.countdownattr,10):void 0,i(),l(),b.isRunning=!1,b.clear(),b.$emit("timer-reset",{timeoutId:timeoutId,millis:b.millis,seconds:b.seconds,minutes:b.minutes,hours:b.hours,days:b.days})},c.bind("$destroy",function(){i(),b.isRunning=!1}),b.countdownattr?(b.millis=1e3*b.countdownattr,b.addCDSeconds=function(a){b.countdown+=a,b.isRunning||b.start()},b.$on("timer-add-cd-seconds",function(a,c){b.addCDSeconds(c)}),b.$on("timer-set-countdown-seconds",function(a,c){b.isRunning||b.clear(),b.countdown=c,b.millis=1e3*c,j()})):b.millis=0,j();var l=function m(){var a=null;b.millis=moment().diff(b.startTime);var c=b.millis%1e3;return b.endTimeAttr&&(a=b.endTimeAttr,b.millis=moment(b.endTime).diff(moment()),c=b.interval-b.millis%1e3),b.countdownattr&&(a=b.countdownattr,b.millis=1e3*b.countdown),b.millis<0?(b.stop(),b.millis=0,j(),void(b.finishCallback&&b.$eval(b.finishCallback))):(j(),b.timeoutId=setTimeout(function(){m(),b.$apply()},b.interval-c),b.$emit("timer-tick",{timeoutId:b.timeoutId,millis:b.millis,seconds:b.seconds,minutes:b.minutes,hours:b.hours,days:b.days}),b.countdown>0?b.countdown--:b.countdown<=0&&(b.stop(),b.finishCallback&&b.$eval(b.finishCallback)),void(null!==a&&(b.progressBar=h.calculateProgressBar(b.startTime,b.millis,b.endTime,b.countdownattr),100===b.progressBar&&(b.displayProgressActive=""))))};(void 0===b.autoStart||b.autoStart===!0)&&b.start()}]}}]).directive("timerControls",function(){return{restrict:"EA",scope:!0,controller:["$scope",function(a){a.timerStatus="reset",a.$on("timer-started",function(){a.timerStatus="started"}),a.$on("timer-stopped",function(){a.timerStatus="stopped"}),a.$on("timer-reset",function(){a.timerStatus="reset"}),a.timerStart=function(){a.$broadcast("timer-start")},a.timerStop=function(){a.$broadcast("timer-stop")},a.timerResume=function(){a.$broadcast("timer-resume")},a.timerToggle=function(){switch(a.timerStatus){case"started":a.timerStop();break;case"stopped":a.timerResume();break;case"reset":a.timerStart()}},a.timerAddCDSeconds=function(b){a.$broadcast("timer-add-cd-seconds",b)}}]}});"undefined"!=typeof module&&"undefined"!=typeof exports&&module.exports===exports&&(module.exports=timerModule);var app=angular.module("timer");app.factory("I18nService",function(){var a=function(){};return a.prototype.language="en",a.prototype.fallback="en",a.prototype.timeHumanizer={},a.prototype.init=function(a,b){var c=humanizeDuration.getSupportedLanguages();this.fallback=void 0!==b?b:"en",-1===c.indexOf(b)&&(this.fallback="en"),this.language=a,-1===c.indexOf(a)&&(this.language=this.fallback),this.timeHumanizer=humanizeDuration.humanizer({language:this.language,halfUnit:!1})},a.prototype.getTimeUnits=function(a){var b=1e3*Math.round(a/1e3),c={};return"undefined"!=typeof this.timeHumanizer?c={millis:this.timeHumanizer(b,{units:["ms"]}),seconds:this.timeHumanizer(b,{units:["s"]}),minutes:this.timeHumanizer(b,{units:["m","s"]}),hours:this.timeHumanizer(b,{units:["h","m","s"]}),days:this.timeHumanizer(b,{units:["d","h","m","s"]}),months:this.timeHumanizer(b,{units:["mo","d","h","m","s"]}),years:this.timeHumanizer(b,{units:["y","mo","d","h","m","s"]})}:console.error('i18nService has not been initialized. You must call i18nService.init("en") for example'),c},a});var app=angular.module("timer");app.factory("progressBarService",function(){var a=function(){};return a.prototype.calculateProgressBar=function(a,b,c,d){var e,f,g=0;return b/=1e3,null!==c?(e=moment(c),f=e.diff(a,"seconds"),g=100*b/f):g=100*b/d,g=100-g,g=Math.round(10*g)/10,g>100&&(g=100),g},new a}); //! moment.js //! version : 2.9.0 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors @@ -18,382 +18,554 @@ return a+c}})}),function(a){a(vb)}(function(a){return a.defineLocale("en-gb",{mo },meridiem:function(a){return 12>a?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}),function(a){a(vb)}(function(a){return a.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"LT:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM DD, YYYY LT"},calendar:{sameDay:"[Ngayon sa] LT",nextDay:"[Bukas sa] LT",nextWeek:"dddd [sa] LT",lastDay:"[Kahapon sa] LT",lastWeek:"dddd [huling linggo] LT",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},ordinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}})}),function(a){a(vb)}(function(a){var b={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};return a.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"LT:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinalParse:/\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,ordinal:function(a){if(0===a)return a+"'ıncı";var c=a%10,d=a%100-c,e=a>=100?100:null;return a+(b[c]||b[d]||b[e])},week:{dow:1,doy:7}})}),function(a){a(vb)}(function(a){return a.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"LT:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}),function(a){a(vb)}(function(a){return a.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"LT:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}),function(a){a(vb)}(function(a){function b(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function c(a,c,d){var e={mm:"хвилина_хвилини_хвилин",hh:"година_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===d?c?"хвилина":"хвилину":"h"===d?c?"година":"годину":a+" "+b(e[d],+a)}function d(a,b){var c={nominative:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_"),accusative:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_")},d=/D[oD]? *MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function e(a,b){var c={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")},d=/(\[[ВвУу]\]) ?dddd/.test(b)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(b)?"genitive":"nominative";return c[d][a.day()]}function f(a){return function(){return a+"о"+(11===this.hours()?"б":"")+"] LT"}}return a.defineLocale("uk",{months:d,monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:e,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"LT:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., LT",LLLL:"dddd, D MMMM YYYY р., LT"},calendar:{sameDay:f("[Сьогодні "),nextDay:f("[Завтра "),lastDay:f("[Вчора "),nextWeek:f("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return f("[Минулої] dddd [").call(this);case 1:case 2:case 4:return f("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:c,mm:c,h:"годину",hh:c,d:"день",dd:c,M:"місяць",MM:c,y:"рік",yy:c},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(a){return/^(дня|вечора)$/.test(a)},meridiem:function(a){return 4>a?"ночі":12>a?"ранку":17>a?"дня":"вечора"},ordinalParse:/\d{1,2}-(й|го)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a+"-й";case"D":return a+"-го";default:return a}},week:{dow:1,doy:7}})}),function(a){a(vb)}(function(a){return a.defineLocale("uz",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"LT:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"D MMMM YYYY, dddd LT"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}),function(a){a(vb)}(function(a){return a.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),longDateFormat:{LT:"HH:mm",LTS:"LT:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY LT",LLLL:"dddd, D MMMM [năm] YYYY LT",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY LT",llll:"ddd, D MMM YYYY LT"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},ordinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}})}),function(a){a(vb)}(function(a){return a.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah点mm",LTS:"Ah点m分s秒",L:"YYYY-MM-DD",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日LT",LLLL:"YYYY年MMMD日ddddLT",l:"YYYY-MM-DD",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日LT",llll:"YYYY年MMMD日ddddLT"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上午"===b?a:"下午"===b||"晚上"===b?a+12:a>=11?a:a+12},meridiem:function(a,b){var c=100*a+b;return 600>c?"凌晨":900>c?"早上":1130>c?"上午":1230>c?"中午":1800>c?"下午":"晚上"},calendar:{sameDay:function(){return 0===this.minutes()?"[今天]Ah[点整]":"[今天]LT"},nextDay:function(){return 0===this.minutes()?"[明天]Ah[点整]":"[明天]LT"},lastDay:function(){return 0===this.minutes()?"[昨天]Ah[点整]":"[昨天]LT"},nextWeek:function(){var b,c;return b=a().startOf("week"),c=this.unix()-b.unix()>=604800?"[下]":"[本]",0===this.minutes()?c+"dddAh点整":c+"dddAh点mm"},lastWeek:function(){var b,c;return b=a().startOf("week"),c=this.unix()=11?a:a+12:"下午"===b||"晚上"===b?a+12:void 0},meridiem:function(a,b){var c=100*a+b;return 900>c?"早上":1130>c?"上午":1230>c?"中午":1800>c?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},ordinalParse:/\d{1,2}(日|月|週)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"一分鐘",mm:"%d分鐘",h:"一小時",hh:"%d小時",d:"一天",dd:"%d天",M:"一個月",MM:"%d個月",y:"一年",yy:"%d年"}})}),vb.locale("en"),Lb?module.exports=vb:"function"==typeof define&&define.amd?(define(function(a,b,c){return c.config&&c.config()&&c.config().noGlobal===!0&&(zb.moment=wb),vb}),ub(!0)):ub()}).call(this); // HumanizeDuration.js - http://git.io/j0HgmQ -(function() { - - var UNITS = { - year: 31557600000, - month: 2629800000, - week: 604800000, - day: 86400000, - hour: 3600000, - minute: 60000, - second: 1000, - millisecond: 1 - }; - +;(function () { var languages = { ar: { - year: function(c) { return ((c === 1) ? "سنة" : "سنوات"); }, - month: function(c) { return ((c === 1) ? "شهر" : "أشهر"); }, - week: function(c) { return ((c === 1) ? "أسبوع" : "أسابيع"); }, - day: function(c) { return ((c === 1) ? "يوم" : "أيام"); }, - hour: function(c) { return ((c === 1) ? "ساعة" : "ساعات"); }, - minute: function(c) { return ((c === 1) ? "دقيقة" : "دقائق"); }, - second: function(c) { return ((c === 1) ? "ثانية" : "ثواني"); }, - millisecond: function(c) { return ((c === 1) ? "جزء من الثانية" : "أجزاء من الثانية"); } + y: function (c) { return c === 1 ? 'سنة' : 'سنوات' }, + mo: function (c) { return c === 1 ? 'شهر' : 'أشهر' }, + w: function (c) { return c === 1 ? 'أسبوع' : 'أسابيع' }, + d: function (c) { return c === 1 ? 'يوم' : 'أيام' }, + h: function (c) { return c === 1 ? 'ساعة' : 'ساعات' }, + m: function (c) { return c === 1 ? 'دقيقة' : 'دقائق' }, + s: function (c) { return c === 1 ? 'ثانية' : 'ثواني' }, + ms: function (c) { return c === 1 ? 'جزء من الثانية' : 'أجزاء من الثانية' }, + decimal: ',' }, ca: { - year: function(c) { return "any" + ((c !== 1) ? "s" : ""); }, - month: function(c) { return "mes" + ((c !== 1) ? "os" : ""); }, - week: function(c) { return "setman" + ((c !== 1) ? "es" : "a"); }, - day: function(c) { return "di" + ((c !== 1) ? "es" : "a"); }, - hour: function(c) { return "hor" + ((c !== 1) ? "es" : "a"); }, - minute: function(c) { return "minut" + ((c !== 1) ? "s" : ""); }, - second: function(c) { return "segon" + ((c !== 1) ? "s" : ""); }, - millisecond: function(c) { return "milisegon" + ((c !== 1) ? "s" : "" ); } + y: function (c) { return 'any' + (c !== 1 ? 's' : '') }, + mo: function (c) { return 'mes' + (c !== 1 ? 'os' : '') }, + w: function (c) { return 'setman' + (c !== 1 ? 'es' : 'a') }, + d: function (c) { return 'di' + (c !== 1 ? 'es' : 'a') }, + h: function (c) { return 'hor' + (c !== 1 ? 'es' : 'a') }, + m: function (c) { return 'minut' + (c !== 1 ? 's' : '') }, + s: function (c) { return 'segon' + (c !== 1 ? 's' : '') }, + ms: function (c) { return 'milisegon' + (c !== 1 ? 's' : '') }, + decimal: ',' + }, + cs: { + y: function (c) { return ['rok', 'roku', 'roky', 'let'][getCzechForm(c)] }, + mo: function (c) { return ['měsíc', 'měsíce', 'měsíce', 'měsíců'][getCzechForm(c)] }, + w: function (c) { return ['týden', 'týdne', 'týdny', 'týdnů'][getCzechForm(c)] }, + d: function (c) { return ['den', 'dne', 'dny', 'dní'][getCzechForm(c)] }, + h: function (c) { return ['hodina', 'hodiny', 'hodiny', 'hodin'][getCzechForm(c)] }, + m: function (c) { return ['minuta', 'minuty', 'minuty', 'minut'][getCzechForm(c)] }, + s: function (c) { return ['sekunda', 'sekundy', 'sekundy', 'sekund'][getCzechForm(c)] }, + ms: function (c) { return ['milisekunda', 'milisekundy', 'milisekundy', 'milisekund'][getCzechForm(c)] }, + decimal: ',' }, da: { - year: "år", - month: function(c) { return "måned" + ((c !== 1) ? "er" : ""); }, - week: function(c) { return "uge" + ((c !== 1) ? "r" : ""); }, - day: function(c) { return "dag" + ((c !== 1) ? "e" : ""); }, - hour: function(c) { return "time" + ((c !== 1) ? "r" : ""); }, - minute: function(c) { return "minut" + ((c !== 1) ? "ter" : ""); }, - second: function(c) { return "sekund" + ((c !== 1) ? "er" : ""); }, - millisecond: function(c) { return "millisekund" + ((c !== 1) ? "er" : ""); } + y: 'år', + mo: function (c) { return 'måned' + (c !== 1 ? 'er' : '') }, + w: function (c) { return 'uge' + (c !== 1 ? 'r' : '') }, + d: function (c) { return 'dag' + (c !== 1 ? 'e' : '') }, + h: function (c) { return 'time' + (c !== 1 ? 'r' : '') }, + m: function (c) { return 'minut' + (c !== 1 ? 'ter' : '') }, + s: function (c) { return 'sekund' + (c !== 1 ? 'er' : '') }, + ms: function (c) { return 'millisekund' + (c !== 1 ? 'er' : '') }, + decimal: ',' }, de: { - year: function(c) { return "Jahr" + ((c !== 1) ? "e" : ""); }, - month: function(c) { return "Monat" + ((c !== 1) ? "e" : ""); }, - week: function(c) { return "Woche" + ((c !== 1) ? "n" : ""); }, - day: function(c) { return "Tag" + ((c !== 1) ? "e" : ""); }, - hour: function(c) { return "Stunde" + ((c !== 1) ? "n" : ""); }, - minute: function(c) { return "Minute" + ((c !== 1) ? "n" : ""); }, - second: function(c) { return "Sekunde" + ((c !== 1) ? "n" : ""); }, - millisecond: function(c) { return "Millisekunde" + ((c !== 1) ? "n" : ""); } + y: function (c) { return 'Jahr' + (c !== 1 ? 'e' : '') }, + mo: function (c) { return 'Monat' + (c !== 1 ? 'e' : '') }, + w: function (c) { return 'Woche' + (c !== 1 ? 'n' : '') }, + d: function (c) { return 'Tag' + (c !== 1 ? 'e' : '') }, + h: function (c) { return 'Stunde' + (c !== 1 ? 'n' : '') }, + m: function (c) { return 'Minute' + (c !== 1 ? 'n' : '') }, + s: function (c) { return 'Sekunde' + (c !== 1 ? 'n' : '') }, + ms: function (c) { return 'Millisekunde' + (c !== 1 ? 'n' : '') }, + decimal: ',' }, en: { - year: function(c) { return "year" + ((c !== 1) ? "s" : ""); }, - month: function(c) { return "month" + ((c !== 1) ? "s" : ""); }, - week: function(c) { return "week" + ((c !== 1) ? "s" : ""); }, - day: function(c) { return "day" + ((c !== 1) ? "s" : ""); }, - hour: function(c) { return "hour" + ((c !== 1) ? "s" : ""); }, - minute: function(c) { return "minute" + ((c !== 1) ? "s" : ""); }, - second: function(c) { return "second" + ((c !== 1) ? "s" : ""); }, - millisecond: function(c) { return "millisecond" + ((c !== 1) ? "s" : ""); } + y: function (c) { return 'year' + (c !== 1 ? 's' : '') }, + mo: function (c) { return 'month' + (c !== 1 ? 's' : '') }, + w: function (c) { return 'week' + (c !== 1 ? 's' : '') }, + d: function (c) { return 'day' + (c !== 1 ? 's' : '') }, + h: function (c) { return 'hour' + (c !== 1 ? 's' : '') }, + m: function (c) { return 'minute' + (c !== 1 ? 's' : '') }, + s: function (c) { return 'second' + (c !== 1 ? 's' : '') }, + ms: function (c) { return 'millisecond' + (c !== 1 ? 's' : '') }, + decimal: '.' }, es: { - year: function(c) { return "año" + ((c !== 1) ? "s" : ""); }, - month: function(c) { return "mes" + ((c !== 1) ? "es" : ""); }, - week: function(c) { return "semana" + ((c !== 1) ? "s" : ""); }, - day: function(c) { return "día" + ((c !== 1) ? "s" : ""); }, - hour: function(c) { return "hora" + ((c !== 1) ? "s" : ""); }, - minute: function(c) { return "minuto" + ((c !== 1) ? "s" : ""); }, - second: function(c) { return "segundo" + ((c !== 1) ? "s" : ""); }, - millisecond: function(c) { return "milisegundo" + ((c !== 1) ? "s" : "" ); } + y: function (c) { return 'año' + (c !== 1 ? 's' : '') }, + mo: function (c) { return 'mes' + (c !== 1 ? 'es' : '') }, + w: function (c) { return 'semana' + (c !== 1 ? 's' : '') }, + d: function (c) { return 'día' + (c !== 1 ? 's' : '') }, + h: function (c) { return 'hora' + (c !== 1 ? 's' : '') }, + m: function (c) { return 'minuto' + (c !== 1 ? 's' : '') }, + s: function (c) { return 'segundo' + (c !== 1 ? 's' : '') }, + ms: function (c) { return 'milisegundo' + (c !== 1 ? 's' : '') }, + decimal: ',' + }, + fi: { + y: function (c) { return c === 1 ? 'vuosi' : 'vuotta' }, + mo: function (c) { return c === 1 ? 'kuukausi' : 'kuukautta' }, + w: function (c) { return 'viikko' + (c !== 1 ? 'a' : '') }, + d: function (c) { return 'päivä' + (c !== 1 ? 'ä' : '') }, + h: function (c) { return 'tunti' + (c !== 1 ? 'a' : '') }, + m: function (c) { return 'minuutti' + (c !== 1 ? 'a' : '') }, + s: function (c) { return 'sekunti' + (c !== 1 ? 'a' : '') }, + ms: function (c) { return 'millisekunti' + (c !== 1 ? 'a' : '') }, + decimal: ',' }, fr: { - year: function(c) { return "an" + ((c !== 1) ? "s" : ""); }, - month: "mois", - week: function(c) { return "semaine" + ((c !== 1) ? "s" : ""); }, - day: function(c) { return "jour" + ((c !== 1) ? "s" : ""); }, - hour: function(c) { return "heure" + ((c !== 1) ? "s" : ""); }, - minute: function(c) { return "minute" + ((c !== 1) ? "s" : ""); }, - second: function(c) { return "seconde" + ((c !== 1) ? "s" : ""); }, - millisecond: function(c) { return "milliseconde" + ((c !== 1) ? "s" : ""); } + y: function (c) { return 'an' + (c !== 1 ? 's' : '') }, + mo: 'mois', + w: function (c) { return 'semaine' + (c !== 1 ? 's' : '') }, + d: function (c) { return 'jour' + (c !== 1 ? 's' : '') }, + h: function (c) { return 'heure' + (c !== 1 ? 's' : '') }, + m: function (c) { return 'minute' + (c !== 1 ? 's' : '') }, + s: function (c) { return 'seconde' + (c !== 1 ? 's' : '') }, + ms: function (c) { return 'milliseconde' + (c !== 1 ? 's' : '') }, + decimal: ',' + }, + gr: { + y: function (c) { return c === 1 ? 'χρόνος' : 'χρόνια' }, + mo: function (c) { return c === 1 ? 'μήνας' : 'μήνες' }, + w: function (c) { return c === 1 ? 'εβδομάδα' : 'εβδομάδες' }, + d: function (c) { return c === 1 ? 'μέρα' : 'μέρες' }, + h: function (c) { return c === 1 ? 'ώρα' : 'ώρες' }, + m: function (c) { return c === 1 ? 'λεπτό' : 'λεπτά' }, + s: function (c) { return c === 1 ? 'δευτερόλεπτο' : 'δευτερόλεπτα' }, + ms: function (c) { return c === 1 ? 'χιλιοστό του δευτερολέπτου' : 'χιλιοστά του δευτερολέπτου' }, + decimal: ',' }, hu: { - year: "év", - month: "hónap", - week: "hét", - day: "nap", - hour: "óra", - minute: "perc", - second: "másodperc", - millisecond: "ezredmásodperc" + y: 'év', + mo: 'hónap', + w: 'hét', + d: 'nap', + h: 'óra', + m: 'perc', + s: 'másodperc', + ms: 'ezredmásodperc', + decimal: ',' + }, + id: { + y: 'tahun', + mo: 'bulan', + w: 'minggu', + d: 'hari', + h: 'jam', + m: 'menit', + s: 'detik', + ms: 'milidetik', + decimal: '.' + }, + is: { + y: 'ár', + mo: function (c) { return 'mánuð' + (c !== 1 ? 'ir' : 'ur') }, + w: function (c) { return 'vik' + (c !== 1 ? 'ur' : 'a') }, + d: function (c) { return 'dag' + (c !== 1 ? 'ar' : 'ur') }, + h: function (c) { return 'klukkutím' + (c !== 1 ? 'ar' : 'i') }, + m: function (c) { return 'mínút' + (c !== 1 ? 'ur' : 'a') }, + s: function (c) { return 'sekúnd' + (c !== 1 ? 'ur' : 'a') }, + ms: function (c) { return 'millisekúnd' + (c !== 1 ? 'ur' : 'a') }, + decimal: '.' }, it: { - year: function(c) { return "ann" + ((c !== 1) ? "i" : "o"); }, - month: function(c) { return "mes" + ((c !== 1) ? "i" : "e"); }, - week: function(c) { return "settiman" + ((c !== 1) ? "e" : "a"); }, - day: function(c) { return "giorn" + ((c !== 1) ? "i" : "o"); }, - hour: function(c) { return "or" + ((c !== 1) ? "e" : "a"); }, - minute: function(c) { return "minut" + ((c !== 1) ? "i" : "o"); }, - second: function(c) { return "second" + ((c !== 1) ? "i" : "o"); }, - millisecond: function(c) { return "millisecond" + ((c !== 1) ? "i" : "o" ); } + y: function (c) { return 'ann' + (c !== 1 ? 'i' : 'o') }, + mo: function (c) { return 'mes' + (c !== 1 ? 'i' : 'e') }, + w: function (c) { return 'settiman' + (c !== 1 ? 'e' : 'a') }, + d: function (c) { return 'giorn' + (c !== 1 ? 'i' : 'o') }, + h: function (c) { return 'or' + (c !== 1 ? 'e' : 'a') }, + m: function (c) { return 'minut' + (c !== 1 ? 'i' : 'o') }, + s: function (c) { return 'second' + (c !== 1 ? 'i' : 'o') }, + ms: function (c) { return 'millisecond' + (c !== 1 ? 'i' : 'o') }, + decimal: ',' }, ja: { - year: "年", - month: "月", - week: "週", - day: "日", - hour: "時間", - minute: "分", - second: "秒", - millisecond: "ミリ秒" + y: '年', + mo: '月', + w: '週', + d: '日', + h: '時間', + m: '分', + s: '秒', + ms: 'ミリ秒', + decimal: '.' }, ko: { - year: "년", - month: "개월", - week: "주일", - day: "일", - hour: "시간", - minute: "분", - second: "초", - millisecond: "밀리 초" + y: '년', + mo: '개월', + w: '주일', + d: '일', + h: '시간', + m: '분', + s: '초', + ms: '밀리 초', + decimal: '.' + }, + lt: { + y: function (c) { return ((c % 10 === 0) || (c % 100 >= 10 && c % 100 <= 20)) ? 'metų' : 'metai' }, + mo: function (c) { return ['mėnuo', 'mėnesiai', 'mėnesių'][getLithuanianForm(c)] }, + w: function (c) { return ['savaitė', 'savaitės', 'savaičių'][getLithuanianForm(c)] }, + d: function (c) { return ['diena', 'dienos', 'dienų'][getLithuanianForm(c)] }, + h: function (c) { return ['valanda', 'valandos', 'valandų'][getLithuanianForm(c)] }, + m: function (c) { return ['minutė', 'minutės', 'minučių'][getLithuanianForm(c)] }, + s: function (c) { return ['sekundė', 'sekundės', 'sekundžių'][getLithuanianForm(c)] }, + ms: function (c) { return ['milisekundė', 'milisekundės', 'milisekundžių'][getLithuanianForm(c)] }, + decimal: ',' + }, + ms: { + y: 'tahun', + mo: 'bulan', + w: 'minggu', + d: 'hari', + h: 'jam', + m: 'minit', + s: 'saat', + ms: 'milisaat', + decimal: '.' }, nl: { - year: "jaar", - month: function(c) { return (c === 1) ? "maand" : "maanden"; }, - week: function(c) { return (c === 1) ? "week" : "weken"; }, - day: function(c) { return (c === 1) ? "dag" : "dagen"; }, - hour: "uur", - minute: function(c) { return (c === 1) ? "minuut" : "minuten"; }, - second: function(c) { return (c === 1) ? "seconde" : "seconden"; }, - millisecond: function(c) { return (c === 1) ? "milliseconde" : "milliseconden"; } + y: 'jaar', + mo: function (c) { return c === 1 ? 'maand' : 'maanden' }, + w: function (c) { return c === 1 ? 'week' : 'weken' }, + d: function (c) { return c === 1 ? 'dag' : 'dagen' }, + h: 'uur', + m: function (c) { return c === 1 ? 'minuut' : 'minuten' }, + s: function (c) { return c === 1 ? 'seconde' : 'seconden' }, + ms: function (c) { return c === 1 ? 'milliseconde' : 'milliseconden' }, + decimal: ',' }, - nob: { - year: "år", - month: function(c) { return "måned" + ((c !== 1) ? "er" : ""); }, - week: function(c) { return "uke" + ((c !== 1) ? "r" : ""); }, - day: function(c) { return "dag" + ((c !== 1) ? "er" : ""); }, - hour: function(c) { return "time" + ((c !== 1) ? "r" : ""); }, - minute: function(c) { return "minutt" + ((c !== 1) ? "er" : ""); }, - second: function(c) { return "sekund" + ((c !== 1) ? "er" : ""); }, - millisecond: function(c) { return "millisekund" + ((c !== 1) ? "er" : ""); } + no: { + y: 'år', + mo: function (c) { return 'måned' + (c !== 1 ? 'er' : '') }, + w: function (c) { return 'uke' + (c !== 1 ? 'r' : '') }, + d: function (c) { return 'dag' + (c !== 1 ? 'er' : '') }, + h: function (c) { return 'time' + (c !== 1 ? 'r' : '') }, + m: function (c) { return 'minutt' + (c !== 1 ? 'er' : '') }, + s: function (c) { return 'sekund' + (c !== 1 ? 'er' : '') }, + ms: function (c) { return 'millisekund' + (c !== 1 ? 'er' : '') }, + decimal: ',' }, pl: { - year: function(c) { return ["rok", "roku", "lata", "lat"][getPolishForm(c)]; }, - month: function(c) { return ["miesiąc", "miesiąca", "miesiące", "miesięcy"][getPolishForm(c)]; }, - week: function(c) { return ["tydzień", "tygodnia", "tygodnie", "tygodni"][getPolishForm(c)]; }, - day: function(c) { return ["dzień", "dnia", "dni", "dni"][getPolishForm(c)]; }, - hour: function(c) { return ["godzina", "godziny", "godziny", "godzin"][getPolishForm(c)]; }, - minute: function(c) { return ["minuta", "minuty", "minuty", "minut"][getPolishForm(c)]; }, - second: function(c) { return ["sekunda", "sekundy", "sekundy", "sekund"][getPolishForm(c)]; }, - millisecond: function(c) { return ["milisekunda", "milisekundy", "milisekundy", "milisekund"][getPolishForm(c)]; } + y: function (c) { return ['rok', 'roku', 'lata', 'lat'][getPolishForm(c)] }, + mo: function (c) { return ['miesiąc', 'miesiąca', 'miesiące', 'miesięcy'][getPolishForm(c)] }, + w: function (c) { return ['tydzień', 'tygodnia', 'tygodnie', 'tygodni'][getPolishForm(c)] }, + d: function (c) { return ['dzień', 'dnia', 'dni', 'dni'][getPolishForm(c)] }, + h: function (c) { return ['godzina', 'godziny', 'godziny', 'godzin'][getPolishForm(c)] }, + m: function (c) { return ['minuta', 'minuty', 'minuty', 'minut'][getPolishForm(c)] }, + s: function (c) { return ['sekunda', 'sekundy', 'sekundy', 'sekund'][getPolishForm(c)] }, + ms: function (c) { return ['milisekunda', 'milisekundy', 'milisekundy', 'milisekund'][getPolishForm(c)] }, + decimal: ',' }, pt: { - year: function(c) { return "ano" + ((c !== 1) ? "s" : ""); }, - month: function(c) { return (c !== 1) ? "meses" : "mês"; }, - week: function(c) { return "semana" + ((c !== 1) ? "s" : ""); }, - day: function(c) { return "dia" + ((c !== 1) ? "s" : ""); }, - hour: function(c) { return "hora" + ((c !== 1) ? "s" : ""); }, - minute: function(c) { return "minuto" + ((c !== 1) ? "s" : ""); }, - second: function(c) { return "segundo" + ((c !== 1) ? "s" : ""); }, - millisecond: function(c) { return "milissegundo" + ((c !== 1) ? "s" : ""); } + y: function (c) { return 'ano' + (c !== 1 ? 's' : '') }, + mo: function (c) { return c !== 1 ? 'meses' : 'mês' }, + w: function (c) { return 'semana' + (c !== 1 ? 's' : '') }, + d: function (c) { return 'dia' + (c !== 1 ? 's' : '') }, + h: function (c) { return 'hora' + (c !== 1 ? 's' : '') }, + m: function (c) { return 'minuto' + (c !== 1 ? 's' : '') }, + s: function (c) { return 'segundo' + (c !== 1 ? 's' : '') }, + ms: function (c) { return 'milissegundo' + (c !== 1 ? 's' : '') }, + decimal: ',' }, ru: { - year: function(c) { return ["лет", "год", "года"][getRussianForm(c)]; }, - month: function(c) { return ["месяцев", "месяц", "месяца"][getRussianForm(c)]; }, - week: function(c) { return ["недель", "неделя", "недели"][getRussianForm(c)]; }, - day: function(c) { return ["дней", "день", "дня"][getRussianForm(c)]; }, - hour: function(c) { return ["часов", "час", "часа"][getRussianForm(c)]; }, - minute: function(c) { return ["минут", "минута", "минуты"][getRussianForm(c)]; }, - second: function(c) { return ["секунд", "секунда", "секунды"][getRussianForm(c)]; }, - millisecond: function(c) { return ["миллисекунд", "миллисекунда", "миллисекунды"][getRussianForm(c)]; } + y: function (c) { return ['лет', 'год', 'года'][getSlavicForm(c)] }, + mo: function (c) { return ['месяцев', 'месяц', 'месяца'][getSlavicForm(c)] }, + w: function (c) { return ['недель', 'неделя', 'недели'][getSlavicForm(c)] }, + d: function (c) { return ['дней', 'день', 'дня'][getSlavicForm(c)] }, + h: function (c) { return ['часов', 'час', 'часа'][getSlavicForm(c)] }, + m: function (c) { return ['минут', 'минута', 'минуты'][getSlavicForm(c)] }, + s: function (c) { return ['секунд', 'секунда', 'секунды'][getSlavicForm(c)] }, + ms: function (c) { return ['миллисекунд', 'миллисекунда', 'миллисекунды'][getSlavicForm(c)] }, + decimal: ',' + }, + uk: { + y: function (c) { return ['років', 'рік', 'роки'][getSlavicForm(c)] }, + mo: function (c) { return ['місяців', 'місяць', 'місяці'][getSlavicForm(c)] }, + w: function (c) { return ['неділь', 'неділя', 'неділі'][getSlavicForm(c)] }, + d: function (c) { return ['днів', 'день', 'дні'][getSlavicForm(c)] }, + h: function (c) { return ['годин', 'година', 'години'][getSlavicForm(c)] }, + m: function (c) { return ['хвилин', 'хвилина', 'хвилини'][getSlavicForm(c)] }, + s: function (c) { return ['секунд', 'секунда', 'секунди'][getSlavicForm(c)] }, + ms: function (c) { return ['мілісекунд', 'мілісекунда', 'мілісекунди'][getSlavicForm(c)] }, + decimal: ',' }, sv: { - year: "år", - month: function(c) { return "månad" + ((c !== 1) ? "er" : ""); }, - week: function(c) { return "veck" + ((c !== 1) ? "or" : "a"); }, - day: function(c) { return "dag" + ((c !== 1) ? "ar" : ""); }, - hour: function(c) { return "timm" + ((c !== 1) ? "ar" : "e"); }, - minute: function(c) { return "minut" + ((c !== 1) ? "er" : ""); }, - second: function(c) { return "sekund" + ((c !== 1) ? "er" : ""); }, - millisecond: function(c) { return "millisekund" + ((c !== 1) ? "er" : ""); } + y: 'år', + mo: function (c) { return 'månad' + (c !== 1 ? 'er' : '') }, + w: function (c) { return 'veck' + (c !== 1 ? 'or' : 'a') }, + d: function (c) { return 'dag' + (c !== 1 ? 'ar' : '') }, + h: function (c) { return 'timm' + (c !== 1 ? 'ar' : 'e') }, + m: function (c) { return 'minut' + (c !== 1 ? 'er' : '') }, + s: function (c) { return 'sekund' + (c !== 1 ? 'er' : '') }, + ms: function (c) { return 'millisekund' + (c !== 1 ? 'er' : '') }, + decimal: ',' }, tr: { - year: "yıl", - month: "ay", - week: "hafta", - day: "gün", - hour: "saat", - minute: "dakika", - second: "saniye", - millisecond: "milisaniye" + y: 'yıl', + mo: 'ay', + w: 'hafta', + d: 'gün', + h: 'saat', + m: 'dakika', + s: 'saniye', + ms: 'milisaniye', + decimal: ',' + }, + vi: { + y: 'năm', + mo: 'tháng', + w: 'tuần', + d: 'ngày', + h: 'giờ', + m: 'phút', + s: 'giây', + ms: 'mili giây', + decimal: ',' }, - "zh-CN": { - year: "年", - month: "个月", - week: "周", - day: "天", - hour: "小时", - minute: "分钟", - second: "秒", - millisecond: "毫秒" + zh_CN: { + y: '年', + mo: '个月', + w: '周', + d: '天', + h: '小时', + m: '分钟', + s: '秒', + ms: '毫秒', + decimal: '.' }, - "zh-TW": { - year: "年", - month: "個月", - week: "周", - day: "天", - hour: "小時", - minute: "分鐘", - second: "秒", - millisecond: "毫秒" + zh_TW: { + y: '年', + mo: '個月', + w: '周', + d: '天', + h: '小時', + m: '分鐘', + s: '秒', + ms: '毫秒', + decimal: '.' } - }; + } - // You can create a humanizer, which returns a function with defaults + // You can create a humanizer, which returns a function with default // parameters. - function humanizer(passedOptions) { - - var result = function humanizer(ms, humanizerOptions) { - var options = extend({}, result, humanizerOptions || {}); - return doHumanization(ms, options); - }; + function humanizer (passedOptions) { + var result = function humanizer (ms, humanizerOptions) { + var options = extend({}, result, humanizerOptions || {}) + return doHumanization(ms, options) + } return extend(result, { - language: "en", - delimiter: ", ", - spacer: " ", - units: ["year", "month", "week", "day", "hour", "minute", "second"], + language: 'en', + delimiter: ', ', + spacer: ' ', + conjunction: '', + serialComma: true, + units: ['y', 'mo', 'w', 'd', 'h', 'm', 's'], languages: {}, - halfUnit: true, - round: false - }, passedOptions); - + round: false, + unitMeasures: { + y: 31557600000, + mo: 2629800000, + w: 604800000, + d: 86400000, + h: 3600000, + m: 60000, + s: 1000, + ms: 1 + } + }, passedOptions) } // The main function is just a wrapper around a default humanizer. - var defaultHumanizer = humanizer({}); - function humanizeDuration() { - return defaultHumanizer.apply(defaultHumanizer, arguments); - } + var humanizeDuration = humanizer({}) // doHumanization does the bulk of the work. - function doHumanization(ms, options) { + function doHumanization (ms, options) { + var i, len, piece // Make sure we have a positive number. // Has the nice sideffect of turning Number objects into primitives. - ms = Math.abs(ms); + ms = Math.abs(ms) - if (ms === 0) { - return "0"; - } - - var dictionary = options.languages[options.language] || languages[options.language]; + var dictionary = options.languages[options.language] || languages[options.language] if (!dictionary) { - throw new Error("No language " + dictionary + "."); + throw new Error('No language ' + dictionary + '.') } - var result = []; + var pieces = [] // Start at the top and keep removing units, bit by bit. - var unitName, unitMS, unitCount, mightBeHalfUnit; - for (var i = 0, len = options.units.length; i < len; i ++) { + var unitName, unitMS, unitCount + for (i = 0, len = options.units.length; i < len; i++) { + unitName = options.units[i] + unitMS = options.unitMeasures[unitName] - unitName = options.units[i]; - if (unitName[unitName.length - 1] === "s") { // strip plurals - unitName = unitName.substring(0, unitName.length - 1); + // What's the number of full units we can fit? + if (i + 1 === len) { + unitCount = ms / unitMS + } else { + unitCount = Math.floor(ms / unitMS) } - unitMS = UNITS[unitName]; - // If it's a half-unit interval, we're done. - if (result.length === 0 && options.halfUnit) { - mightBeHalfUnit = (ms / unitMS) * 2; - if (mightBeHalfUnit === Math.floor(mightBeHalfUnit)) { - return render(mightBeHalfUnit / 2, unitName, dictionary, options.spacer); - } + // Add the string. + pieces.push({ + unitCount: unitCount, + unitName: unitName + }) + + // Remove what we just figured out. + ms -= unitCount * unitMS + } + + var firstOccupiedUnitIndex = 0 + for (i = 0; i < pieces.length; i++) { + if (pieces[i].unitCount) { + firstOccupiedUnitIndex = i + break } + } - // What's the number of full units we can fit? - if ((i + 1) === len) { - unitCount = ms / unitMS; - if (options.round) { - unitCount = Math.round(unitCount); + if (options.round) { + var ratioToLargerUnit, previousPiece + for (i = pieces.length - 1; i >= 0; i--) { + piece = pieces[i] + piece.unitCount = Math.round(piece.unitCount) + + if (i === 0) { break } + + previousPiece = pieces[i - 1] + + ratioToLargerUnit = options.unitMeasures[previousPiece.unitName] / options.unitMeasures[piece.unitName] + if ((piece.unitCount % ratioToLargerUnit) === 0 || (options.largest && ((options.largest - 1) < (i - firstOccupiedUnitIndex)))) { + previousPiece.unitCount += piece.unitCount / ratioToLargerUnit + piece.unitCount = 0 } - } else { - unitCount = Math.floor(ms / unitMS); } + } - // Add the string. - if (unitCount) { - result.push(render(unitCount, unitName, dictionary, options.spacer)); + var result = [] + for (i = 0, pieces.length; i < len; i++) { + piece = pieces[i] + if (piece.unitCount) { + result.push(render(piece.unitCount, piece.unitName, dictionary, options)) } - // Remove what we just figured out. - ms -= unitCount * unitMS; + if (result.length === options.largest) { break } + } + if (result.length) { + if (!options.conjunction || result.length === 1) { + return result.join(options.delimiter) + } else if (result.length === 2) { + return result.join(options.conjunction) + } else if (result.length > 2) { + return result.slice(0, -1).join(options.delimiter) + (options.serialComma ? ',' : '') + options.conjunction + result.slice(-1) + } + } else { + return render(0, options.units[options.units.length - 1], dictionary, options) } + } - return result.join(options.delimiter); + function render (count, type, dictionary, options) { + var decimal + if (options.decimal === void 0) { + decimal = dictionary.decimal + } else { + decimal = options.decimal + } - } + var countStr = count.toString().replace('.', decimal) - function render(count, type, dictionary, spacer) { - var dictionaryValue = dictionary[type]; - var word; - if (typeof dictionaryValue === "function") { - word = dictionaryValue(count); + var dictionaryValue = dictionary[type] + var word + if (typeof dictionaryValue === 'function') { + word = dictionaryValue(count) } else { - word = dictionaryValue; + word = dictionaryValue } - return count + spacer + word; + + return countStr + options.spacer + word } - function extend(destination) { - var source; - for (var i = 1; i < arguments.length; i ++) { - source = arguments[i]; + function extend (destination) { + var source + for (var i = 1; i < arguments.length; i++) { + source = arguments[i] for (var prop in source) { if (source.hasOwnProperty(prop)) { - destination[prop] = source[prop]; + destination[prop] = source[prop] } } } - return destination; + return destination + } + + // Internal helper function for Czech language. + function getCzechForm (c) { + if (c === 1) { + return 0 + } else if (Math.floor(c) !== c) { + return 1 + } else if (c % 10 >= 2 && c % 10 <= 4 && c % 100 < 10) { + return 2 + } else { + return 3 + } } // Internal helper function for Polish language. - function getPolishForm(c) { + function getPolishForm (c) { if (c === 1) { - return 0; + return 0 } else if (Math.floor(c) !== c) { - return 1; - } else if (2 <= c % 10 && c % 10 <= 4 && !(10 < c % 100 && c % 100 < 20)) { - return 2; + return 1 + } else if (c % 10 >= 2 && c % 10 <= 4 && !(c % 100 > 10 && c % 100 < 20)) { + return 2 } else { - return 3; + return 3 } } - // Internal helper function for Russian language. - function getRussianForm(c) { + // Internal helper function for Russian and Ukranian languages. + function getSlavicForm (c) { if (Math.floor(c) !== c) { - return 2; - } else if (c === 0 || (c >= 5 && c <= 20) || (c % 10 >= 5 && c % 10 <= 9) || (c % 10 === 0)) { - return 0; - } else if (c === 1 || c % 10 === 1) { - return 1; + return 2 + } else if ((c % 100 >= 5 && c % 100 <= 20) || (c % 10 >= 5 && c % 10 <= 9) || c % 10 === 0) { + return 0 + } else if (c % 10 === 1) { + return 1 } else if (c > 1) { - return 2; + return 2 + } else { + return 0 + } + } + + // Internal helper function for Lithuanian language. + function getLithuanianForm (c) { + if (c === 1 || (c % 10 === 1 && c % 100 > 20)) { + return 0 + } else if (Math.floor(c) !== c || (c % 10 >= 2 && c % 100 > 20) || (c % 10 >= 2 && c % 100 < 10)) { + return 1 } else { - return 0; + return 2 } } - function getSupportedLanguages() { - var result = []; + humanizeDuration.getSupportedLanguages = function getSupportedLanguages () { + var result = [] for (var language in languages) { if (languages.hasOwnProperty(language)) { - result.push(language); + result.push(language) } } - return result; + return result } - humanizeDuration.humanizer = humanizer; - humanizeDuration.getSupportedLanguages = getSupportedLanguages; + humanizeDuration.humanizer = humanizer - if (typeof define === "function" && define.amd) { - define(function() { - return humanizeDuration; - }); - } else if (typeof module !== "undefined" && module.exports) { - module.exports = humanizeDuration; + if (typeof define === 'function' && define.amd) { + define(function () { + return humanizeDuration + }) + } else if (typeof module !== 'undefined' && module.exports) { + module.exports = humanizeDuration } else { - this.humanizeDuration = humanizeDuration; + this.humanizeDuration = humanizeDuration } - -})(); +})(); // eslint-disable-line semi