/* TODO: terminology is to be changed for : canvas/board : currently, the canvas object is named board, while the structure used to store automata current state is named "board" as well. This is confusing drawing board could be enough to lift any ambiguity rules: confusion bewteen ruleset and rules. it's never clear if we refers to a rule or the whole (named) set */ import { createStore } from "vuex"; export const store = createStore({ strict: process.env.NODE_ENV !== "production", state: { rules1d: { name: "rule 73", rules: { 111: 0, 110: 1, 101: 0, 100: 0, "011": 1, "010": 0, "001": 0, "000": 1, }, }, cellProperties: { size: 3, liveColor: "#000000", deadColor: "#F5F5F5", }, canvasWidth: 0, canvasHeight: 0, boardWidth: 0, boardHeight: 0, refreshRate: 300, initial1dState: "onecell", activeMenu: "", drawingDirection: "y", lastBoard: {}, isDrawing1d: false, }, mutations: { update1dSingleRule(state, data) { state.rules1d.name = data.name; state.rules1d.rules[data.rule] = data.value; }, update1dRules(state, data) { state.rules1d = data; }, setCellProperties(state, data) { state.cellProperties[data.name] = data.value; }, setCanvasWidth(state, data) { state.canvasWidth = data; }, setCanvasHeight(state, data) { state.canvasHeight = data; }, setRefreshRate(state, data) { state.refreshRate = data; }, setInitial1dState(state, data) { state.initial1dState = data; }, setActiveMenu(state, data) { state.activeMenu = data; }, setDrawingDirection(state, data) { state.drawingDirection = data; }, setLastBoard(state, data) { state.lastBoard = data; }, setCanvas(state, data) { state.canvas = data; }, setContext(state, data) { state.ctx = data; }, setIsDrawing1d(state, data) { state.isDrawing1d = data; }, }, getters: { getCellProperties(state) { return state.cellProperties; }, get1dRules(state) { return state.rules1d; }, getRule1d(state) { // getter with side-effect. no work return state.rules1d; }, getCanvasWidth(state) { return state.canvasWidth; }, getCanvasHeight(state) { return state.canvasHeight; }, getRefreshRate(state) { return state.refreshRate; }, getInitial1dState(state) { return state.initial1dState; }, getActiveMenu(state) { return state.activeMenu; }, getDrawingDirection(state) { return state.drawingDirection; }, getLastBoard(state) { return state.lastBoard; }, getIsDrawing1d(state) { return state.isDrawing1d; }, }, actions: { draw1d({ commit }) { commit("setIsDrawing1d", 1); }, stop({ commit }) { commit("setIsDrawing1d"); // commit("setIsDrawing2d") }, }, modules: {}, });