atomatic
Version:
An easy to use build and development tool for Atomic Design Systems, that works with rollup.js, Browserify, webpack and many more...
74 lines (56 loc) • 1.82 kB
JavaScript
import Vue from 'vue';
const mutations = {
setSections: (state, sections) => state.sections = sections,
setUrls: (state, urls) => state.urls = urls,
reloadUrls: (state, urls) => {
console.warn('%cAtomatic reload:', 'font-weight:bold', 'triggered');
state.reloadUrls = urls;
},
toggleFullscreen: (state) => {
state.fullscreen = !state.fullscreen;
},
toggleMenuItemActiveState: (state, payload) => {
const
{url} = payload,
currentState = state.menuItemActiveStates[url],
newState = currentState !== undefined ? !currentState : true;
Vue.set(state.menuItemActiveStates, [url], newState);
},
setComponentSourceType: (state, payload) => {
const
{url, sourceType = null} = payload,
currentSourceType = state.componentSourceType[url],
newSourceType = currentSourceType !== sourceType ? sourceType : null;
Vue.set(state.componentSourceType, [url], newSourceType);
},
scrollPos: (state, payload) => {
const
{id, scrollTop} = payload;
Vue.set(state.scrollPos, id, scrollTop);
},
setComponentSourceCodes: (state, payload) => {
const
{url, sourceType = null, data = ''} = payload;
if (!state.componentSourceCodes[url]) {
Vue.set(state.componentSourceCodes, [url], {});
}
Vue.set(state.componentSourceCodes[url], sourceType, data);
},
setIframeState: (state, payload) => {
const {url = ''} = payload;
if (url !== '') {
Vue.set(state.iframeStates, [url], payload);
}
},
setUrl: (state, url) => {
window.location.hash = url;
state.url = url;
},
setSearch: (state, search) => {
Vue.set(state, 'search', search);
},
setFilteredStructure: (state, structure) => {
Vue.set(state, 'filteredStructure', structure);
}
};
export default mutations;