forked from meowsus/jquery-state
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjquery-state.min.js
1 lines (1 loc) · 1.72 KB
/
jquery-state.min.js
1
!function(r,t,e,n){var i="state",s=[],u=function(t){return void 0!==t&&t},a=function(t){return!0!==r.data(t,"plugin_"+i)},o=function(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)},h=function(){return o()+o()+o()+o()};function c(t,e,n){this.element=t,this.guid=h(),this.init(e,n)}c.prototype={announce:function(t,e){r(this.element).trigger("state:"+e,[this.state,t])},addToStateHistory:function(t,e){s.push({guid:this.guid,element:this.element,state:t,namespace:e})},addState:function(t,e){void 0===this.state[e]&&(this.state[e]=[]),this.state[e].push(t)},createState:function(t,e){this.state={},this.state[e]=[],this.state[e].push(t)},activate:function(){r.data(this.element,"plugin_"+i,!0)},init:function(t,e){this.createState(t,e),this.activate()}},r[i]=function(t,e){if(t=u(t),e=u(e),"destroy"===t)return s=[];if("elementsIn"===t){if(!e)throw new Error('`$.state("elementsIn")` requires a `namespace` String as its second argument.');return n=e,i=[],a=[],r.each(s,function(t,e){e.namespace===n&&-1===i.indexOf(e.guid)&&(i.push(e.guid),a.push(e.element))}),r(a)}return s;var n,i,a},r.fn[i]=function(e,n){if(e=u(e),n=u(n),e&&!r.isPlainObject(e))throw new Error("jQuery State requires the first argument be a plain Object.");if(e&&!n)throw new Error("jQuery State requires the second argument to be a String.");if(e&&n)return this.each(function(){var t;return a(this)?(t=new c(this,e,n),r.data(this,i+"_instance",t)):(t=r.data(this,i+"_instance")).addState(e,n),t.addToStateHistory(e,n),t.announce(e,n),this});var t=r(this).first()[0];if(a(t))throw new Error("jQuery State has yet to be initialized on this element. Initialize with `$(element).state(stateObj, namespace)`.");return r.data(t,i+"_instance").state}}(jQuery,window,document);