slickgrid
Version:
A lightning fast JavaScript grid/spreadsheet
9 lines • 2.27 kB
JavaScript
/**
* SlickGrid v3.0.4
* (c) 2009-present Michael Leibman
* homepage: http://github.com/mleibman/slickgrid
* license: MIT
* date: 2023-02-15
* file: ./plugins/slick.state.js
*/
!function(l){l.extend(!0,window,{Slick:{State:function(o){var i,t,r=(o=l.extend(!0,{},e,o)).storage,n=new Slick.Event,s={state:null,current:null};function u(){var e;if(t&&r)return(e={sortcols:i.getSortColumns(),viewport:i.getViewport(),columns:l.map(i.getColumns(),function(e){return{id:e.id,width:e.width}}),userData:null}).userData=s.current,a(e.userData),n.notify(e),r.set(o.key_prefix+t,e)}function c(e){return s.current=e,this}function a(e){s.state=e,c(e)}l.extend(this,{init:function(e){(t=(i=e).cid||o.cid)?(e.onColumnsResized.subscribe(u),e.onColumnsReordered.subscribe(u),e.onSort.subscribe(u)):console.warn("grid has no client id. state persisting is disabled.")},destroy:function(){grid.onSort.unsubscribe(u),grid.onColumnsReordered.unsubscribe(u),grid.onColumnsResized.unsubscribe(u),u()},save:u,setUserData:c,resetUserData:function(){return s.current=s.state,this},getUserData:function(){return s.current},getStateUserData:function(){return s.state},restore:function(){return l.Deferred(function(s){return t?r?void r.get(o.key_prefix+t).then(function(e){var t,r,n;e&&(e.sortcols&&i.setSortColumns(e.sortcols),e.viewport&&o.scrollRowIntoView&&i.scrollRowIntoView(e.viewport.top,!0),e.columns&&((t=o.defaultColumns)&&(r={},l.each(t,function(e,t){r[t.id]=t}),n=[],l.each(e.columns,function(e,t){r[t.id]&&n.push(l.extend(!0,{},r[t.id],{width:t.width,headerCssClass:t.headerCssClass}))}),e.columns=n),i.setColumns(e.columns)),a(e.userData)),s.resolve(e)},s.reject):s.reject("missing store"):s.reject("missing client id")})},onStateChanged:n,reset:function(){r.set(o.key_prefix+t,{}),a(null)}})}}});var e={key_prefix:"slickgrid:",storage:new function(){var n=window.localStorage;return void 0===n&&console.error("localStorage is not available. slickgrid statepersistor disabled."),{get:function(r){return l.Deferred(function(t){if(!n)return t.reject("missing localStorage");try{var e=n.getItem(r);if(e)return t.resolve(JSON.parse(e));t.resolve()}catch(e){t.reject(e)}})},set:function(e,t){n&&(void 0!==t&&(t=JSON.stringify(t)),n.setItem(e,t))}}},scrollRowIntoView:!0}}(jQuery);