!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;"undefined"!=typeof window?e=window:"undefined"!=typeof global?e=global:"undefined"!=typeof self&&(e=self),e.Vibr8=t()}}(function(){return function t(e,i,n){function r(s,u){if(!i[s]){if(!e[s]){var a="function"==typeof require&&require;if(!u&&a)return a(s,!0);if(o)return o(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var h=i[s]={exports:{}};e[s][0].call(h.exports,function(t){var i=e[s][1][t];return r(i?i:t)},h,h.exports,t,e,i,n)}return i[s].exports}for(var o="function"==typeof require&&require,s=0;st?!1:t>i?!1:!0}},{}],3:[function(t,e,i){"use strict";var n=t("./pattern.js"),r=window.navigator;r.vibrate=r.vibrate||r.webkitVibrate||r.mozVibrate||r.msVibrate;var o=function(t,e){return o.prototype._singletonInstance?o.prototype._singletonInstance:(o.prototype._singletonInstance=this,this.iterNum=0,this.period=e?e:1700,this.isVibrating=!1,this.bindings={},this.pattern=new n(t),void(this._counter={status:!1,val:0}))};o.vibrationSupported=function(){return!!r.vibrate},o.prototype.start=function(t,e){this.isVibrating||(t&&this.setPattern(t),e&&this.setPeriod(e),this.isVibrating=!0,this._initNewSubPeriod())},o.prototype.stop=function(){this._vibrate(0),this.isVibrating=!1,this._counter.status&&(this._counter.status=!1,this._counter.val=0)},o.prototype.repeat=function(t,e,i){this.isVibrating||(e&&this.setPattern(e),i&&this.setPeriod(i),this._counter.val=t,this._counter.status=!0,this.start())},o.prototype.setPeriod=function(t){this.period=10>t?10:t},o.prototype.getPeriod=function(){return this.period},o.prototype.setPattern=function(t){this.pattern=new n(t)},o.prototype.bind=function(t,e){return this.bindings[t]?this.bindings[t].push(e):this.bindings[t]=[e],this},e.exports=o,o.prototype._vibrate=function(t){r.vibrate?r.vibrate(t):console.error("Vibration API is not supported")},o.prototype._scheduleNewSubPeriod=function(t){var e=this;setTimeout(function(){e._initNewSubPeriod()},t)},o.prototype._initNewSubPeriod=function(){return this.isVibrating?(this.iterNum++,this._vibrateOrBeIdle(this.iterNum>=this.pattern.sequence.length?this.pattern.getTimeSequenceForEl(this.period,this._restartIterations()):this.pattern.getTimeSequenceForEl(this.period,this.iterNum))):void this._emit("ended",{target:this})},o.prototype._vibrateOrBeIdle=function(t){this._counterEnabledAndHaveReachedZero()?this.stop():(this.iterNum%2?this._emit("ended",{target:this}):(this._emit("started",{target:this}),this._vibrate(t)),this._scheduleNewSubPeriod(t))},o.prototype._restartIterations=function(){return this._counter.status&&this._counter.val--,this.iterNum=0,this._emit("newperiod",{target:this}),0},o.prototype._emit=function(t,e){this.bindings[t]&&this.bindings[t].forEach(function(t){t(e)})},o.prototype._counterEnabledAndHaveReachedZero=function(){return this._counter.status&&this._counter.val<=0&&this.iterNum<=0}},{"./pattern.js":1}]},{},[3])(3)});