## Storage You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object][1] ```js const editor = grapesjs.init({ storageManager: { // options } }) ``` Once the editor is instantiated you can use its API and listen to its events. Before using these methods, you should get the module from the instance. ```js // Listen to events editor.on('storage:start', () => { ... }); // Use the API const storageManager = editor.Storage; storageManager.add(...); ``` ## Available Events * `storage:start` - Before the storage request is started * `storage:start:store` - Before the store request. The object to store is passed as an argument (which you can edit) * `storage:start:load` - Before the load request. Items to load are passed as an argument (which you can edit) * `storage:load` - Triggered when something was loaded from the storage, loaded object passed as an argument * `storage:store` - Triggered when something is stored to the storage, stored object passed as an argument * `storage:end` - After the storage request is ended * `storage:end:store` - After the store request * `storage:end:load` - After the load request * `storage:error` - On any error on storage request, passes the error as an argument * `storage:error:store` - Error on store request, passes the error as an argument * `storage:error:load` - Error on load request, passes the error as an argument ## Methods * [getConfig][2] * [isAutosave][3] * [setAutosave][4] * [getStepsBeforeSave][5] * [setStepsBeforeSave][6] * [getStorages][7] * [getCurrent][8] * [getCurrentStorage][9] * [setCurrent][10] * [getStorageOptions][11] * [add][12] * [get][13] * [store][14] * [load][15] ## getConfig Get configuration object Returns **[Object][16]** ## isAutosave Check if autosave is enabled. Returns **[Boolean][17]** ## setAutosave Set autosave value. ### Parameters * `value` **[Boolean][17]** ## getStepsBeforeSave Returns number of steps required before trigger autosave. Returns **[Number][18]** ## setStepsBeforeSave Set steps required before trigger autosave. ### Parameters * `value` **[Number][18]** ## add Add new storage. ### Parameters * `type` **[String][19]** Storage type * `storage` **[Object][16]** Storage definition * `storage.load` **[Function][20]** Load method * `storage.store` **[Function][20]** Store method ### Examples ```javascript storageManager.add('local2', { async load(storageOptions) { // ... }, async store(data, storageOptions) { // ... }, }); ``` ## get Return storage by type. ### Parameters * `type` **[String][19]** Storage type Returns **([Object][16] | null)** ## getStorages Get all storages. Returns **[Object][16]** ## getCurrent Get current storage type. Returns **[String][19]** ## setCurrent Set current storage type. ### Parameters * `type` **[String][19]** Storage type ## getStorageOptions Get storage options by type. ### Parameters * `type` **[String][19]** Storage type Returns **[Object][16]** ## store Store data in the current storage. ### Parameters * `data` **[Object][16]** Project data. * `options` **[Object][16]?** Storage options. (optional, default `{}`) ### Examples ```javascript const data = editor.getProjectData(); await storageManager.store(data); ``` Returns **[Object][16]** Stored data. ## load Load resource from the current storage by keys ### Parameters * `options` **[Object][16]?** Storage options. (optional, default `{}`) ### Examples ```javascript const data = await storageManager.load(); editor.loadProjectData(data); ``` Returns **[Object][16]** Loaded data. [1]: https://github.com/GrapesJS/grapesjs/blob/master/src/storage_manager/config/config.ts [2]: #getconfig [3]: #isautosave [4]: #setautosave [5]: #getstepsbeforesave [6]: #setstepsbeforesave [7]: #getstorages [8]: #getcurrent [9]: #getcurrentstorage [10]: #setcurrent [11]: #getstorageoptions [12]: #add [13]: #get [14]: #store [15]: #load [16]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object [17]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean [18]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number [19]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String [20]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function