| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 | <!DOCTYPE html><html><head>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  <title>The source code</title>  <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />  <script type="text/javascript" src="../resources/prettify/prettify.js"></script>  <style type="text/css">    .highlight { display: block; background-color: #ddd; }  </style>  <script type="text/javascript">    function highlight() {      document.getElementById(location.hash.replace(/#/, "")).className = "highlight";    }  </script></head><body onload="prettyPrint(); highlight();">  <pre class="prettyprint lang-js"><span id='Ext-state-LocalStorageProvider'>/**</span> * @class Ext.state.LocalStorageProvider * A Provider implementation which saves and retrieves state via the HTML5 localStorage object. * If the browser does not support local storage, an exception will be thrown upon instantiating * this class. */Ext.define('Ext.state.LocalStorageProvider', {    /* Begin Definitions */        extend: 'Ext.state.Provider',        alias: 'state.localstorage',        /* End Definitions */       constructor: function(){        var me = this;        me.callParent(arguments);        me.store = me.getStorageObject();        me.state = me.readLocalStorage();    },        readLocalStorage: function(){        var store = this.store,            i = 0,            len = store.length,            prefix = this.prefix,            prefixLen = prefix.length,            data = {},            key;                    for (; i < len; ++i) {            key = store.key(i);            if (key.substring(0, prefixLen) == prefix) {                data[key.substr(prefixLen)] = this.decodeValue(store.getItem(key));            }                    }        return data;    },        set : function(name, value){        var me = this;                me.clear(name);        if (typeof value == "undefined" || value === null) {            return;        }        me.store.setItem(me.prefix + name, me.encodeValue(value));        me.callParent(arguments);    },    // private    clear : function(name){        this.store.removeItem(this.prefix + name);        this.callParent(arguments);    },        getStorageObject: function(){        try {            var supports = 'localStorage' in window && window['localStorage'] !== null;            if (supports) {                return window.localStorage;            }        } catch (e) {            return false;        }        //<debug>        Ext.Error.raise('LocalStorage is not supported by the current browser');        //</debug>    }    });</pre></body></html>
 |