{"version":3,"sources":["serviceWorker.js","features/ui/UISlice.js","features/tiles/TilesSlice.js","features/tiles/TileSlice.js","components/Tile.js","components/Board.js","components/BoardConfig.js","components/HeaderMenu.js","components/TileConfig.js","features/error/ErrorSlice.js","components/TilePropertyNeighbours.js","components/TilesConfig.js","components/App.js","features/board/BoardSlice.js","reducers/index.js","index.js"],"names":["Boolean","window","location","hostname","match","BOARD_STATE","GAME_CONFIG","uiSlice","createSlice","name","initialState","state","config","type","reducers","UIUpdateState","action","Object","assign","payload","UIUpdateConfig","actions","BOARD_NEIGHBOURS","DISPLAY_TYPE","TRIGGER_TYPE","tilesSlice","properties","neighbours","display","value","events","trigger","key","condition","JSON","stringify","condition_neighbour","set","field","rule","tilesUpdateNeighbours","tilesUpdateDisplay","tilesUpdateEvent","tilesUpdatePropertyNeighbours","tileSlice","tileUpdateNeighbours","row","column","tileUpdateDisplay","tileUpdateProperties","tileUpdatePropertyNeighbours","props","dispatch","useSelector","ui","useDispatch","tiles_general","tiles","tile","Card","square","variant","CardContent","onClick","e","_","each","rows","columns","tile_positions","range","flatMap","map","col","tiles_properties","populateNeighbours","_properties","listeners","filter","event","changes","rule_condition","ruler","parse","rule_neighbour","filterNeighbours","mapKeys","rule_set","push","handleClick","Typography","color","gutterBottom","position","inRange","Fragment","GridList","cellHeight","spacing","cols","tabIndex","onKeyDown","triggerKey","console","log","handleKey","Array","keys","GridListTile","Tile","isOpened","board","Drawer","anchor","open","onClose","PaperProps","style","width","Container","noValidate","autoComplete","component","TextField","id","label","defaultValue","marginRight","InputProps","readOnly","flexGrow","marginBottom","AppBar","Toolbar","Button","uiConfig","Modal","aria-labelledby","aria-describedby","Paper","elevation","margin","padding","param","errorSlice","message","updateError","_state","clearError","_action","Neighbour","disabled","FormControlLabel","control","Checkbox","checked","includes","onChange","neighbour","incoming","concat","toggleNeighbours","FormControl","fullWidth","FormLabel","entries","FormHelperText","fieldId","field_name","index_event","index_action","ruleIsValid","target","Function","error","TilePropertyNeighbours","select","size","MenuItem","event_tile","index_tile","idx_event","triggerTypeOnChange","triggerKeyOnChange","index_rule","multiline","idx_rule","conditionOnChange","conditionNeighbourOnChange","setOnChange","actionRuleOnChange","CssBaseline","HeaderMenu","BoardConfig","TileConfig","TilesConfig","fixed","Board","boardSlice","combineReducers","uiReducer","boardReducer","tilesReducer","tileReducer","errorReducer","store","configureStore","reducer","rootReducer","ReactDOM","render","StrictMode","App","document","getElementById","navigator","serviceWorker","ready","then","registration","unregister","catch"],"mappings":"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","file":"static/js/main.0706f80f.chunk.js","sourcesContent":["// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import { createSlice } from \"@reduxjs/toolkit\";\n\nexport const BOARD_STATE = {\n RUNNING: \"BOARD_IS_RUNNING\",\n PAUSED: \"BOARD_IS_PAUSED\",\n};\n\nexport const GAME_CONFIG = {\n NONE: \"CONFIG_NONE\",\n BOARD: \"CONFIG_BOARD\",\n TILES: \"CONFIG_TILES\",\n TILE: \"CONFIG_TILE\",\n};\n\nconst uiSlice = createSlice({\n name: \"ui\",\n initialState: {\n state: BOARD_STATE.RUNNING,\n config: { type: GAME_CONFIG.NONE },\n },\n reducers: {\n UIUpdateState(state, action) {\n return Object.assign({}, state, { state: action.payload });\n },\n UIUpdateConfig(state, action) {\n return Object.assign({}, state, { config: action.payload });\n },\n },\n});\n\nexport const { UIUpdateState, UIUpdateConfig } = uiSlice.actions;\n\nexport default uiSlice.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\n\nexport const BOARD_NEIGHBOURS = {\n TL: \"TOP_LEFT\",\n T: \"TOP\",\n TR: \"TOP_RIGHT\",\n L: \"LEFT\",\n R: \"RIGHT\",\n BL: \"BOTTOM_LEFT\",\n B: \"BOTTOM\",\n BR: \"BOTTOM_RIGHT\",\n};\n\nexport const DISPLAY_TYPE = {\n NONE: \"NONE\",\n TEXT: \"TEXT\",\n EMOJI: \"EMOJI\",\n};\n\nexport const TRIGGER_TYPE = {\n KEYPRESS: \"keypress\",\n CLICK: \"click\",\n};\n\nconst tilesSlice = createSlice({\n name: \"tiles\",\n initialState: {\n properties: {\n neighbours: [\n BOARD_NEIGHBOURS.TL,\n BOARD_NEIGHBOURS.T,\n BOARD_NEIGHBOURS.TR,\n BOARD_NEIGHBOURS.L,\n BOARD_NEIGHBOURS.R,\n BOARD_NEIGHBOURS.BL,\n BOARD_NEIGHBOURS.B,\n BOARD_NEIGHBOURS.BR,\n ],\n display: { type: DISPLAY_TYPE.TEXT, value: \"DEAD\" },\n },\n events: [\n {\n trigger: { type: TRIGGER_TYPE.KEYPRESS, key: \"@space\" },\n actions: [\n {\n condition: JSON.stringify([\n \"boolean.And\",\n [\n \"condition.Equal\",\n [\"basic.Field\", \"display\"],\n { type: DISPLAY_TYPE.TEXT, value: \"DEAD\" },\n ],\n [\n \"condition.Equal\",\n [\"array.Length\", [\"basic.Field\", \"@neighbours\"]],\n 3,\n ],\n ]),\n condition_neighbour: JSON.stringify([\n \"condition.Equal\",\n [\"basic.Field\", \"display\"],\n { type: DISPLAY_TYPE.TEXT, value: \"ALIVE\" },\n ]),\n set: {\n field: \"display\",\n rule: JSON.stringify([\n \"basic.Value\",\n { type: DISPLAY_TYPE.TEXT, value: \"ALIVE\" },\n ]),\n },\n },\n {\n condition: JSON.stringify([\n \"boolean.And\",\n [\n \"condition.Equal\",\n [\"basic.Field\", \"display\"],\n { type: DISPLAY_TYPE.TEXT, value: \"ALIVE\" },\n ],\n [\n \"condition.In\",\n [\"array.Length\", [\"basic.Field\", \"@neighbours\"]],\n [2, 3],\n ],\n ,\n ]),\n condition_neighbour: JSON.stringify([\n \"condition.Equal\",\n [\"basic.Field\", \"display\"],\n { type: DISPLAY_TYPE.TEXT, value: \"ALIVE\" },\n ]),\n set: {\n field: \"display\",\n rule: JSON.stringify([\n \"basic.Value\",\n { type: DISPLAY_TYPE.TEXT, value: \"ALIVE\" },\n ]),\n },\n },\n {\n condition: JSON.stringify([\n \"boolean.And\",\n [\n \"condition.Equal\",\n [\"basic.Field\", \"display\"],\n { type: DISPLAY_TYPE.TEXT, value: \"ALIVE\" },\n ],\n [\n \"boolean.Not\",\n [\n \"condition.In\",\n [\"array.Length\", [\"basic.Field\", \"@neighbours\"]],\n [2, 3],\n ],\n ],\n ]),\n condition_neighbour: JSON.stringify([\n \"condition.Equal\",\n [\"basic.Field\", \"display\"],\n { type: DISPLAY_TYPE.TEXT, value: \"ALIVE\" },\n ]),\n set: {\n field: \"display\",\n rule: JSON.stringify([\n \"basic.Value\",\n { type: DISPLAY_TYPE.TEXT, value: \"DEAD\" },\n ]),\n },\n },\n ],\n },\n {\n trigger: { type: TRIGGER_TYPE.CLICK },\n actions: [\n {\n condition: JSON.stringify([\n \"condition.Equal\",\n [\"basic.Field\", \"display\"],\n { type: DISPLAY_TYPE.TEXT, value: \"DEAD\" },\n ]),\n condition_neighbour: JSON.stringify([\"boolean.Tautology\"]),\n set: {\n field: \"display\",\n rule: JSON.stringify([\n \"basic.Value\",\n { type: DISPLAY_TYPE.TEXT, value: \"ALIVE\" },\n ]),\n },\n },\n {\n condition: JSON.stringify([\n \"condition.Equal\",\n [\"basic.Field\", \"display\"],\n { type: DISPLAY_TYPE.TEXT, value: \"ALIVE\" },\n ]),\n condition_neighbour: JSON.stringify([\"boolean.Tautology\"]),\n set: {\n field: \"display\",\n rule: JSON.stringify([\n \"basic.Value\",\n { type: DISPLAY_TYPE.TEXT, value: \"DEAD\" },\n ]),\n },\n },\n ],\n },\n ],\n },\n reducers: {\n tilesUpdateNeighbours(state, action) {\n return Object.assign({}, state, {\n properties: Object.assign({}, state.properties, {\n neighbours: action.payload,\n }),\n });\n },\n tilesUpdateDisplay(state, action) {\n return Object.assign({}, state, {\n properties: Object.assign({}, state.properties, {\n display: action.payload,\n }),\n });\n },\n tilesUpdateEvent(state, action) {\n return Object.assign({}, state, {\n events: action.payload,\n });\n },\n },\n});\n\nexport const {\n tilesUpdatePropertyNeighbours,\n tilesUpdateDisplay,\n tilesUpdateEvent,\n} = tilesSlice.actions;\n\nexport default tilesSlice.reducer;\n","import _ from \"lodash\";\nimport { createSlice } from \"@reduxjs/toolkit\";\n\nconst tileSlice = createSlice({\n name: \"tiles\",\n initialState: {},\n reducers: {\n tileUpdateNeighbours(state, action) {\n // delegate state change work to immerjs\n if (!state[[action.payload.row, action.payload.column]]) {\n state[[action.payload.row, action.payload.column]] = {\n properties: {},\n events: [],\n };\n }\n\n state[[action.payload.row, action.payload.column]].properties.neighbours =\n action.payload.neighbours;\n },\n tileUpdateDisplay(state, action) {\n if (!state[[action.payload.row, action.payload.column]]) {\n state[[action.payload.row, action.payload.column]] = {\n properties: {},\n events: [],\n };\n }\n\n state[[action.payload.row, action.payload.column]].properties.display =\n action.payload.display;\n },\n tileUpdateProperties(state, action) {\n if (!state[[action.payload.row, action.payload.column]]) {\n state[[action.payload.row, action.payload.column]] = {\n properties: {},\n events: [],\n };\n }\n\n state[\n [action.payload.row, action.payload.column]\n ].properties = Object.assign(\n {},\n state[[action.payload.row, action.payload.column]].properties,\n action.payload.properties\n );\n },\n },\n});\n\nexport const {\n tileUpdatePropertyNeighbours,\n tileUpdateDisplay,\n tileUpdateProperties,\n} = tileSlice.actions;\n\nexport default tileSlice.reducer;\n","import {\n BOARD_STATE,\n GAME_CONFIG,\n UIUpdateConfig,\n} from \"../features/ui/UISlice\";\nimport { DISPLAY_TYPE, TRIGGER_TYPE } from \"../features/tiles/TilesSlice\";\nimport { filterNeighbours, populateNeighbours } from \"./Board\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport Card from \"@material-ui/core/Card\";\nimport CardActions from \"@material-ui/core/CardActions\";\nimport CardContent from \"@material-ui/core/CardContent\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport React from \"react\";\nimport SettingsIcon from \"@material-ui/icons/Settings\";\nimport Typography from \"@material-ui/core/Typography\";\nimport _ from \"lodash\";\nimport ruler from \"@jeffrey04/ruler\";\nimport { tileUpdateProperties } from \"../features/tiles/TileSlice\";\n\nfunction showActions(handleClick) {\n return (\n