diff --git a/CHANGELOG.md b/CHANGELOG.md index 17293d68..461c54ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,9 @@ _Note: Gaps between patch versions are faulty, broken or test releases._ + * **Improvement** + * Persist "Show content of concatenated modules" option ([#322](https://github.com/webpack-contrib/webpack-bundle-analyzer/pull/322) by [@lorenzos](https://github.com/lorenzos)) + ## 3.6.1 * **Bug Fix** diff --git a/client/components/ModulesTreemap.jsx b/client/components/ModulesTreemap.jsx index 0b4d0f3f..051a7d87 100644 --- a/client/components/ModulesTreemap.jsx +++ b/client/components/ModulesTreemap.jsx @@ -5,6 +5,7 @@ import {computed} from 'mobx'; import {observer} from 'mobx-preact'; import {isChunkParsed} from '../utils'; +import localStorage from '../localStorage'; import Treemap from './Treemap'; import Tooltip from './Tooltip'; import Switcher from './Switcher'; @@ -208,6 +209,11 @@ export default class ModulesTreemap extends Component { handleConcatenatedModulesContentToggle = flag => { store.showConcatenatedModulesContent = flag; + if (flag) { + localStorage.setItem('showConcatenatedModulesContent', true); + } else { + localStorage.removeItem('showConcatenatedModulesContent'); + } } handleChunkContextMenuHide = () => { diff --git a/client/localStorage.js b/client/localStorage.js new file mode 100644 index 00000000..cdd1b591 --- /dev/null +++ b/client/localStorage.js @@ -0,0 +1,25 @@ +const KEY_PREFIX = 'wba'; + +export default { + + getItem(key) { + try { + return JSON.parse(window.localStorage.getItem(`${KEY_PREFIX}.${key}`)); + } catch (err) { + return null; + } + }, + + setItem(key, value) { + try { + window.localStorage.setItem(`${KEY_PREFIX}.${key}`, JSON.stringify(value)); + } catch (err) { /* ignored */ } + }, + + removeItem(key) { + try { + window.localStorage.removeItem(`${KEY_PREFIX}.${key}`); + } catch (err) { /* ignored */ } + } + +}; diff --git a/client/store.js b/client/store.js index 41f27ad0..5710a8a0 100644 --- a/client/store.js +++ b/client/store.js @@ -1,5 +1,6 @@ import {observable, computed} from 'mobx'; import {isChunkParsed, walkModules} from './utils'; +import localStorage from './localStorage'; export class Store { cid = 0; @@ -10,7 +11,7 @@ export class Store { @observable searchQuery = ''; @observable defaultSize; @observable selectedSize; - @observable showConcatenatedModulesContent = false; + @observable showConcatenatedModulesContent = (localStorage.getItem('showConcatenatedModulesContent') === true); setModules(modules) { walkModules(modules, module => {