{"version":3,"sources":["components/scheduler.js"],"names":["dmx","Component","initialData","running","percent","attributes","delay","type","Number","default","unit","String","noprogress","Boolean","norepeat","noload","methods","start","this","stop","events","tick","Event","render","node","props","beforeDestroy","set","_startTime","Date","now","clearTimeout","_timer","data","dispatchEvent","setTimeout","elapsed","total","Math","ceil","requestAnimationFrame"],"mappings":";;;;;;AAAAA,IAAAC,UAAA,YAAA,CAEAC,YAAA,CACAC,SAAA,EACAC,QAAA,GAGAC,WAAA,CACAC,MAAA,CACAC,KAAAC,OACAC,QAAA,IAGAC,KAAA,CACAH,KAAAI,OACAF,QAAA,WAGAG,WAAA,CACAL,KAAAM,QACAJ,SAAA,GAGAK,SAAA,CACAP,KAAAM,QACAJ,SAAA,GAGAM,OAAA,CACAR,KAAAM,QACAJ,SAAA,IAIAO,QAAA,CACAC,MAAA,WACAC,KAAAD,SAGAE,KAAA,WACAD,KAAAC,SAIAC,OAAA,CACAC,KAAAC,OAGAC,OAAA,SAAAC,GACAN,KAAAO,MAAAV,QACAG,KAAAD,SAIAS,cAAA,WACAR,KAAAC,QAGAF,MAAA,WACAC,KAAAS,IAAA,WAAA,GACAT,KAAAU,WAAAC,KAAAC,MACAZ,KAAAG,QAGAF,KAAA,WACAY,aAAAb,KAAAc,QACAd,KAAAS,IAAA,WAAA,GACAT,KAAAS,IAAA,UAAA,IAGAN,KAAA,WACA,GAAAH,KAAAe,KAAA9B,QAIA,GAAAe,KAAAO,MAAAb,WACAM,KAAAgB,cAAA,QAEAhB,KAAAO,MAAAX,WACAI,KAAAc,OAAAG,YAAA,IAAAjB,KAAAG,QAAAH,KAAAZ,cAEA,CACA,IAAA8B,EAAAP,KAAAC,MAAAZ,KAAAU,WACAS,EAAAnB,KAAAZ,QAEA8B,GAAAC,GACAnB,KAAAS,IAAA,UAAA,KAEAT,KAAAgB,cAAA,QAEAhB,KAAAO,MAAAX,SACAI,KAAAC,OAEAD,KAAAD,UAGAC,KAAAS,IAAA,UAAAW,KAAAC,KAAA,IAAAH,EAAAC,IACAG,uBAAA,IAAAtB,KAAAG,YAKAf,MAAA,WACA,OAAAY,KAAAO,MAAAf,MACA,IAAA,cACA,OAAAQ,KAAAO,MAAAnB,MACA,IAAA,UACA,OAAA,IAAAY,KAAAO,MAAAnB,MACA,IAAA,QACA,OAAA,KAAAY,KAAAO,MAAAnB,MACA,IAAA,OACA,OAAA,MAAAY,KAAAO,MAAAnB,MACA,QAEA,OAAA,IAAAY,KAAAO,MAAAnB","file":"../dmxScheduler/dmxScheduler.js","sourcesContent":["dmx.Component('scheduler', {\r\n\r\n initialData: {\r\n running: false,\r\n percent: 0\r\n },\r\n\r\n attributes: {\r\n delay: {\r\n type: Number,\r\n default: 60\r\n },\r\n\r\n unit: {\r\n type: String,\r\n default: 'seconds' // miliseconds, seconds, minutes, hours, days\r\n },\r\n\r\n noprogress: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n norepeat: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n noload: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n\r\n methods: {\r\n start: function() {\r\n this.start();\r\n },\r\n\r\n stop: function() {\r\n this.stop();\r\n }\r\n },\r\n\r\n events: {\r\n tick: Event\r\n },\r\n\r\n render: function(node) {\r\n if (!this.props.noload) {\r\n this.start();\r\n }\r\n },\r\n\r\n beforeDestroy: function() {\r\n this.stop();\r\n },\r\n\r\n start: function() {\r\n this.set('running', true);\r\n this._startTime = Date.now();\r\n this.tick();\r\n },\r\n\r\n stop: function() {\r\n clearTimeout(this._timer);\r\n this.set('running', false);\r\n this.set('percent', 0);\r\n },\r\n\r\n tick: function() {\r\n if (!this.data.running) {\r\n return;\r\n }\r\n\r\n if (this.props.noprogress) {\r\n this.dispatchEvent('tick');\r\n \r\n if (!this.props.norepeat) {\r\n this._timer = setTimeout(() => this.tick(), this.delay());\r\n }\r\n } else {\r\n let elapsed = Date.now() - this._startTime;\r\n let total = this.delay();\r\n\r\n if (elapsed >= total) {\r\n this.set('percent', 100);\r\n\r\n this.dispatchEvent('tick');\r\n\r\n if (this.props.norepeat) {\r\n this.stop();\r\n } else {\r\n this.start();\r\n }\r\n } else {\r\n this.set('percent', Math.ceil(100 * elapsed / total));\r\n requestAnimationFrame(() => this.tick());\r\n }\r\n }\r\n },\r\n\r\n delay: function() {\r\n switch (this.props.unit) {\r\n case 'miliseconds':\r\n return this.props.delay;\r\n case 'minutes':\r\n return this.props.delay * 60000;\r\n case 'hours':\r\n return this.props.delay * 3600000;\r\n case 'days':\r\n return this.props.delay * 86400000;\r\n default:\r\n // default seconds\r\n return this.props.delay * 1000;\r\n }\r\n }\r\n\r\n});\r\n"]}