{"version":3,"sources":["state/context/ThemeProvider.js","state/orm/gameConfig/reducers.js","state/orm/gameConfig/actions.js","state/orm/gameConfig/selectors.js","state/orm/gameConfig/index.js","state/orm/readspeaker/reducers.js","state/orm/readspeaker/actions.js","state/orm/readspeaker/selectors.js","state/orm/readspeaker/index.js","state/orm/base/actions.js","utils/createReducer.js","state/orm/base/reducers.js","state/orm/base/selectors.js","state/orm/base/index.js","state/orm/base/types.js","state/orm/index.js","state/orm/blocco/models.js","state/orm/readspeaker/models.js","state/orm/base/models.js","state/middleware/logger/index.js","state/middleware/reduxApi/index.js","state/orm/blocco/reducers.js","state/orm/blocco/selectors.js","state/orm/blocco/actions.js","state/orm/blocco/index.js","state/orm/reducers.js","state/store/index.js","bootstrap/Providers.js","bootstrap/index.js","serviceWorker.js","index.js","state/orm/gameConfig/models.js"],"names":["ThemeContext","React","createContext","initialState","style","typography","fontFamily","join","palette","primary","main","secondary","background1","background2","themeReducer","state","action","newstate","type","payload","set","isEqual","ThemeContextProvider","props","children","_useReducer","useReducer","_useReducer2","Object","C_Users_lhvanulzen_CloudStation_projecten_AppBuilder_ldo_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__","themeState","themeDispatch","react__WEBPACK_IMPORTED_MODULE_1___default","a","createElement","Provider","value","reducers","baseReducers","getExports","Model","modelName","combineReducers","actions","baseActions","selectors","baseSelectors","__webpack_require__","d","__webpack_exports__","actions_namespaceObject","selectors_namespaceObject","reducer","getTestList","createSelector","orm","_ref","db","session","params","INSTANCE_NAME","camelCase","list","insert","MODEL_NAME","types","update","select","dispatch","keys","length","Error","Promise","resolve","deselect","remove","selectObject","deselectObject","isClean","isDirty","loadListRequest","defineProperty","RSAA","endpoint","concat","kebabCase","path","method","has","body","get","submitUpdateRequest","loadRecordRequest","assign","createReducer","handlers","arguments","undefined","prototype","hasOwnProperty","call","_createReducer","indexOf","id","index","toConsumableArray","slice","isListLoading","_createReducer2","isUpdateLoading","_createReducer3","isRecordLoading","_createReducer4","selected","_createReducer5","selectedObject","_createReducer6","stateSelector","find","all","filter","record","filters","key","toRefArray","getList","getSelected","keyValue","idExists","withId","ref","reducers_namespaceObject","REMOVE","INSERT","UPDATE","SELECT","DESELECT","SELECT_OBJECT","DESELECT_OBJECT","IS_CLEAN","IS_DIRTY","LOAD_LIST_REQUEST","LOAD_LIST_SUCCESS","LOAD_LIST_FAILURE","REFRESH_LIST_REQUEST","REFRESH_LIST_SUCCESS","REFRESH_LIST_FAILURE","UPDATE_LIST_REQUEST","UPDATE_LIST_SUCCESS","UPDATE_LIST_FAILURE","LOAD_RECORD_REQUEST","LOAD_RECORD_SUCCESS","LOAD_RECORD_FAILURE","SUBMIT_UPDATE_REQUEST","SUBMIT_UPDATE_SUCCESS","SUBMIT_UPDATE_FAILURE","lodash__WEBPACK_IMPORTED_MODULE_0__","snakeCase","toUpperCase","redux_orm__WEBPACK_IMPORTED_MODULE_0__","_blocco_models__WEBPACK_IMPORTED_MODULE_1__","_gameConfig_models__WEBPACK_IMPORTED_MODULE_2__","_readspeaker_models__WEBPACK_IMPORTED_MODULE_3__","ORM","register","Blocco","GameConfig","Readspeaker","ModelType","BaseModel","attr","_Model","C_Users_lhvanulzen_CloudStation_projecten_AppBuilder_ldo_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__","this","C_Users_lhvanulzen_CloudStation_projecten_AppBuilder_ldo_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__","C_Users_lhvanulzen_CloudStation_projecten_AppBuilder_ldo_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__","apply","C_Users_lhvanulzen_CloudStation_projecten_AppBuilder_ldo_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__","C_Users_lhvanulzen_CloudStation_projecten_AppBuilder_ldo_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","data","Symbol","iterator","next","done","upsert","err","return","console","log","exists","delete","REGULAR","SUCCESS","STARTED","FAILURE","logInfo","_console","info","createLogger","active","store","prevState","getState","result","nextState","groupCollapsed","logGroupCollapsed","meta","async","determineStyle","error","groupEnd","logGroupEnd","response","debugger","callApiMiddleware","isRSAA","rsaa","credentials","headers","objectSpread","Accept","JSON","stringify","rootReducer","ormReducers","enhancer","compose","applyMiddleware","thunkMiddleware","reduxApiMiddleware","apiMiddleware","loggerMiddleware","createStore","configureStore","styles","themeOverrides","_themeOverrides","overrides","MuiButton","contained","border","backgroundSize","&:hover","borderColor","containedPrimary","backgroundImage","containedSecondary","MuiFab","root","borderRadius","InnerProvider","useContext","themeProps","react_default","Fragment","ThemeProvider","theme","createMuiTheme","CssBaseline","react_router_dom","Providers","context_ThemeProvider","es","Shell","lazy","e","then","bind","ShellLoader","Suspense","fallback","LinearProgress","Bootstrap","bootstrap_Providers","Boolean","window","location","hostname","match","ReactDOM","render","bootstrap","document","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.aa34e146.chunk.js","sourcesContent":["import React, { useReducer } from 'react';\r\nimport { isEqual } from 'lodash';\r\nimport set from 'lodash/fp/set';\r\n\r\n/**\r\n * [ThemeContext description]\r\n * @type Context\r\n */\r\nexport const ThemeContext = React.createContext();\r\n\r\nconst initialState = {\r\n\tstyle: 1,\r\n\ttypography: {\r\n\t\tfontFamily: [\r\n\t\t\t'\"Muli\"',\r\n\t\t\t'-apple-system',\r\n\t\t\t'BlinkMacSystemFont',\r\n\t\t\t'\"Segoe UI\"',\r\n\t\t\t'Roboto',\r\n\t\t\t'\"Helvetica Neue\"',\r\n\t\t\t'Arial',\r\n\t\t\t'sans-serif',\r\n\t\t\t'\"Apple Color Emoji\"',\r\n\t\t\t'\"Segoe UI Emoji\"',\r\n\t\t\t'\"Segoe UI Symbol\"',\r\n\t\t].join(','),\r\n\t},\r\n\tpalette: {\r\n\t\tprimary: {\r\n\t\t\tmain: '#0095c6',\r\n\t\t},\r\n\t\tsecondary: {\r\n\t\t\tmain: '#232c4b',\r\n\t\t},\r\n\t\tbackground1: '#5ec5ed',\r\n\t\tbackground2: '#ffffff',\r\n\t},\r\n\t// overrides: {\r\n\t// \tMuiButton: {\r\n\t// \t\tcontained: {\r\n\t// \t\t\tborder: '3px solid rgba(255,255,255,0.7)',\r\n\t// \t\t\tbackgroundSize: 'cover',\r\n\t// \t\t\t'&:hover': {\r\n\t// \t\t\t\tborderColor: 'rgba(255,255,255,1)',\r\n\t// \t\t\t},\r\n\t// \t\t},\r\n\t// \t\tcontainedPrimary: {\r\n\t// \t\t\tbackgroundImage: 'url(\"/assets/graphics/lettertrein/button-bg/h.jpg\")',\r\n\t// \t\t},\r\n\t// \t\tcontainedSecondary: {\r\n\t// \t\t\tbackgroundImage: 'url(\"/assets/graphics/lettertrein/button-bg/a.jpg\")',\r\n\t// \t\t},\r\n\t// \t},\r\n\t// \tMuiFab: {\r\n\t// \t\troot: {\r\n\t// \t\t\tborder: '3px solid rgba(255,255,255,0.7)',\r\n\t// \t\t\tborderRadius: '1%',\r\n\t// \t\t\tbackgroundSize: 'cover',\r\n\t// \t\t\t'&:hover': {\r\n\t// \t\t\t\tborderColor: 'rgba(255,255,255,1)',\r\n\t// \t\t\t},\r\n\t// \t\t},\r\n\t// \t\tprimary: {\r\n\t// \t\t\tbackgroundImage: 'url(\"/assets/graphics/lettertrein/button-bg/h.jpg\")',\r\n\t// \t\t},\r\n\t// \t\tsecondary: {\r\n\t// \t\t\tbackgroundImage: 'url(\"/assets/graphics/lettertrein/button-bg/a.jpg\")',\r\n\t// \t\t},\r\n\t// \t},\r\n\t// },\r\n};\r\n\r\n/**\r\n * HOC implementation\r\n * @return Function\r\n */\r\nexport const withTheme = WrappedComponent => props => (\r\n\t{value => }\r\n);\r\n\r\n/**\r\n * Create a reducer for themes\r\n */\r\nfunction themeReducer(state, action) {\r\n\tlet newstate = state;\r\n\tswitch (action.type) {\r\n\t\tcase 'UPDATE_COLOR':\r\n\t\t\tif (action.payload.primary) newstate = set(`palette.primary.main`, action.payload.primary)(newstate);\r\n\t\t\tif (action.payload.secondary) newstate = set(`palette.secondary.main`, action.payload.secondary)(newstate);\r\n\t\t\tif (action.payload.background1) newstate = set(`palette.background1`, action.payload.background1)(newstate);\r\n\t\t\tif (action.payload.background2) newstate = set(`palette.background2`, action.payload.background2)(newstate);\r\n\t\t\tbreak;\r\n\t\tcase 'UPDATE_STYLE':\r\n\t\t\tnewstate = set(`style`, action.payload)(newstate);\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tnewstate = state;\r\n\t\t\tbreak;\r\n\t}\r\n\treturn isEqual(state, newstate) ? state : newstate;\r\n}\r\n\r\n/**\r\n * [state description]\r\n * @type Class\r\n */\r\nexport function ThemeContextProvider(props) {\r\n\t/**\r\n\t * Properties\r\n\t */\r\n\tconst { children } = props;\r\n\tconst [themeState, themeDispatch] = useReducer(themeReducer, initialState);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t);\r\n}\r\n","import { combineReducers } from 'redux';\r\nimport { reducers as baseReducers } from 'state/orm/base';\r\n// import createReducer from 'utils/createReducer';\r\nimport Model from './models';\r\n// import * as types from './types';\r\n\r\n/**\r\n * Create base reducers\r\n */\r\nconst reducers = baseReducers.getExports(Model.modelName);\r\n\r\n/**\r\n * Demo reducer value\r\n */\r\n// reducers.testValue = createReducer(false, {\r\n// \t[types.TEST_ACTION]() {\r\n// \t\treturn true;\r\n// \t},\r\n// });\r\n\r\nexport default combineReducers(reducers);\r\n","import { actions as baseActions } from 'state/orm/base';\r\nimport Model from './models';\r\n\r\n/**\r\n * Basic actions\r\n */\r\nconst actions = baseActions.getExports(Model.modelName);\r\n\r\n/**\r\n * Export all\r\n */\r\nexport default actions;\r\n","// import { createSelector } from 'redux-orm';\r\n// import { camelCase } from 'lodash';\r\n// import { orm } from 'state/orm';\r\nimport { selectors as baseSelectors } from 'state/orm/base';\r\nimport Model from './models';\r\n\r\n/**\r\n * Create default selector function\r\n */\r\n// const stateSelector = ({ state }) => state.db;\r\n\r\n/**\r\n * Create base selectors\r\n */\r\nconst selectors = baseSelectors.getExports(Model.modelName);\r\n\r\n/**\r\n * Demo custom selector\r\n */\r\n// selectors.getTestList = createSelector(\r\n// \torm,\r\n// \tstateSelector,\r\n// \tstate => state,\r\n// \t(session, params) => {\r\n// \t\tconst INSTANCE_NAME = camelCase(Model.modelName);\r\n// \t\treturn params.state[INSTANCE_NAME].list;\r\n// \t}\r\n// );\r\n\r\nexport default selectors;\r\n","import reducer from './reducers';\r\nimport * as actions from './actions';\r\nimport * as selectors from './selectors';\r\n\r\nexport { actions, selectors };\r\n\r\nexport default reducer;\r\n","import { combineReducers } from 'redux';\r\nimport { reducers as baseReducers } from 'state/orm/base';\r\n// import createReducer from 'utils/createReducer';\r\nimport Model from './models';\r\n// import * as types from './types';\r\n\r\n/**\r\n * Create base reducers\r\n */\r\nconst reducers = baseReducers.getExports(Model.modelName);\r\n\r\n/**\r\n * Demo reducer value\r\n */\r\n// reducers.testValue = createReducer(false, {\r\n// \t[types.TEST_ACTION]() {\r\n// \t\treturn true;\r\n// \t},\r\n// });\r\n\r\nexport default combineReducers(reducers);\r\n","import { actions as baseActions } from 'state/orm/base';\r\nimport Model from './models';\r\n\r\n/**\r\n * Basic actions\r\n */\r\nconst actions = baseActions.getExports(Model.modelName);\r\n\r\n/**\r\n * Export all\r\n */\r\nexport default actions;\r\n","import { createSelector } from 'redux-orm';\r\nimport { camelCase } from 'lodash';\r\nimport { orm } from 'state/orm';\r\nimport { selectors as baseSelectors } from 'state/orm/base';\r\nimport Model from './models';\r\n\r\n/**\r\n * Create default selector function\r\n */\r\nconst stateSelector = ({ state }) => state.db;\r\n\r\n/**\r\n * Create base selectors\r\n */\r\nconst selectors = baseSelectors.getExports(Model.modelName);\r\n\r\n/**\r\n * Demo custom selector\r\n */\r\nselectors.getTestList = createSelector(\r\n\torm,\r\n\tstateSelector,\r\n\tstate => state,\r\n\t(session, params) => {\r\n\t\tconst INSTANCE_NAME = camelCase(Model.modelName);\r\n\t\treturn params.state[INSTANCE_NAME].list;\r\n\t}\r\n);\r\n\r\nexport default selectors;\r\n","import reducer from './reducers';\r\nimport * as actions from './actions';\r\nimport * as selectors from './selectors';\r\n\r\nexport { actions, selectors };\r\n\r\nexport default reducer;\r\n","import { RSAA } from 'redux-api-middleware';\r\nimport { get, has, kebabCase } from 'lodash';\r\nimport * as types from './types';\r\n\r\n// =============================================================================\r\n// COMMON ACTIONS\r\n// =============================================================================\r\n\r\nexport const insert = MODEL_NAME => payload => ({ type: types.INSERT(MODEL_NAME), payload });\r\nexport const update = MODEL_NAME => payload => ({ type: types.UPDATE(MODEL_NAME), payload });\r\nexport const select = MODEL_NAME => payload => dispatch => {\r\n\tif (Object.keys(payload).length !== 1) throw new Error('There must be exactly 1 key in the payload');\r\n\tdispatch({ type: types.SELECT(MODEL_NAME), payload });\r\n\treturn Promise.resolve(true);\r\n};\r\nexport const deselect = MODEL_NAME => payload => ({ type: types.DESELECT(MODEL_NAME), payload });\r\nexport const remove = MODEL_NAME => payload => ({ type: types.REMOVE(MODEL_NAME), payload });\r\nexport const selectObject = MODEL_NAME => payload => ({\r\n\ttype: types.SELECT_OBJECT(MODEL_NAME),\r\n\tpayload,\r\n});\r\nexport const deselectObject = MODEL_NAME => payload => ({\r\n\ttype: types.DESELECT_OBJECT(MODEL_NAME),\r\n\tpayload,\r\n});\r\nexport const isClean = MODEL_NAME => payload => ({ type: types.IS_CLEAN(MODEL_NAME), payload });\r\nexport const isDirty = MODEL_NAME => payload => ({ type: types.IS_DIRTY(MODEL_NAME), payload });\r\n\r\n// =============================================================================\r\n// COMMON ACTIONS - SERVER CALLS\r\n// =============================================================================\r\n\r\nexport const loadListRequest = MODEL_NAME => payload => ({\r\n\t[RSAA]: {\r\n\t\tendpoint: `/api/${kebabCase(MODEL_NAME)}/${payload.path}`,\r\n\t\tmethod: has(payload, 'body') ? 'POST' : 'GET',\r\n\t\tbody: get(payload, 'body'),\r\n\t\ttypes: [types.LOAD_LIST_REQUEST(MODEL_NAME), types.LOAD_LIST_SUCCESS(MODEL_NAME), types.LOAD_LIST_FAILURE(MODEL_NAME)],\r\n\t},\r\n});\r\n\r\nexport const submitUpdateRequest = MODEL_NAME => payload => ({\r\n\t[RSAA]: {\r\n\t\tendpoint: `/api/${kebabCase(MODEL_NAME)}/${payload.path}`,\r\n\t\tmethod: 'POST',\r\n\t\tbody: get(payload, 'body'),\r\n\t\ttypes: [types.SUBMIT_UPDATE_REQUEST(MODEL_NAME), types.SUBMIT_UPDATE_SUCCESS(MODEL_NAME), types.SUBMIT_UPDATE_FAILURE(MODEL_NAME)],\r\n\t},\r\n});\r\n\r\nexport const loadRecordRequest = MODEL_NAME => payload => ({\r\n\t[RSAA]: {\r\n\t\tendpoint: `/api/${kebabCase(MODEL_NAME)}/${payload.path}`,\r\n\t\tmethod: has(payload, 'body') ? 'POST' : 'GET',\r\n\t\tbody: get(payload, 'body'),\r\n\t\ttypes: [types.LOAD_RECORD_REQUEST(MODEL_NAME), types.LOAD_RECORD_SUCCESS(MODEL_NAME), types.LOAD_RECORD_FAILURE(MODEL_NAME)],\r\n\t},\r\n});\r\n\r\n// =============================================================================\r\n// EXPORTS\r\n// =============================================================================\r\n\r\nexport const getExports = MODEL_NAME =>\r\n\tObject.assign(\r\n\t\t{},\r\n\t\t{\r\n\t\t\tinsert: insert(MODEL_NAME),\r\n\t\t\tupdate: update(MODEL_NAME),\r\n\t\t\tselect: select(MODEL_NAME),\r\n\t\t\tremove: remove(MODEL_NAME),\r\n\t\t\tdeselect: deselect(MODEL_NAME),\r\n\t\t\tisClean: isClean(MODEL_NAME),\r\n\t\t\tisDirty: isDirty(MODEL_NAME),\r\n\t\t\tloadListRequest: loadListRequest(MODEL_NAME),\r\n\t\t\t// refreshListRequest: refreshListRequest(MODEL_NAME),\r\n\t\t\t// updateListRequest: updateListRequest(MODEL_NAME),\r\n\t\t\tloadRecordRequest: loadRecordRequest(MODEL_NAME),\r\n\t\t\t// submitInsertRequest: submitInsertRequest(MODEL_NAME),\r\n\t\t\tsubmitUpdateRequest: submitUpdateRequest(MODEL_NAME),\r\n\t\t}\r\n\t);\r\n","export default function createReducer(initialState, handlers) {\r\n\treturn function reducer(state = initialState, action) {\r\n\t\tif (Object.prototype.hasOwnProperty.call(handlers, action.type)) {\r\n\t\t\treturn handlers[action.type](state, action);\r\n\t\t}\r\n\t\treturn state;\r\n\t};\r\n}\r\n","import createReducer from 'utils/createReducer';\r\nimport * as types from './types';\r\n\r\n// =============================================================================\r\n// REDUCERS\r\n// =============================================================================\r\n\r\n/**\r\n * Bewaard het id van het formulier die gewijzigd is\r\n *\r\n * @param Boolean isDirty\r\n * @param Integer id\r\n * @return Boolean\r\n */\r\nexport const isDirty = MODEL_NAME =>\r\n\tcreateReducer([], {\r\n\t\t[types.IS_DIRTY(MODEL_NAME)](state, action) {\r\n\t\t\tconst index = state.indexOf(action.payload.id);\r\n\t\t\treturn index > -1 ? state : state.concat(action.payload.id);\r\n\t\t},\r\n\t\t[types.IS_CLEAN(MODEL_NAME)](state, action) {\r\n\t\t\tconst index = state.indexOf(action.payload.id);\r\n\t\t\treturn index > -1 ? [...state.slice(0, index), ...state.slice(index + 1)] : state;\r\n\t\t},\r\n\t});\r\n\r\n/**\r\n * Bewaar of een lijst nog aan het laden is\r\n *\r\n * @return Boolean\r\n */\r\nexport const isListLoading = MODEL_NAME =>\r\n\tcreateReducer(false, {\r\n\t\t[types.LOAD_LIST_REQUEST(MODEL_NAME)]() {\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\t[types.LOAD_LIST_SUCCESS(MODEL_NAME)]() {\r\n\t\t\treturn false;\r\n\t\t},\r\n\t\t[types.LOAD_LIST_FAILURE(MODEL_NAME)]() {\r\n\t\t\treturn false;\r\n\t\t},\r\n\t\t[types.REFRESH_LIST_REQUEST(MODEL_NAME)]() {\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\t[types.REFRESH_LIST_SUCCESS(MODEL_NAME)]() {\r\n\t\t\treturn false;\r\n\t\t},\r\n\t\t[types.REFRESH_LIST_FAILURE(MODEL_NAME)]() {\r\n\t\t\treturn false;\r\n\t\t},\r\n\t\t[types.UPDATE_LIST_REQUEST(MODEL_NAME)]() {\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\t[types.UPDATE_LIST_SUCCESS(MODEL_NAME)]() {\r\n\t\t\treturn false;\r\n\t\t},\r\n\t\t[types.UPDATE_LIST_FAILURE(MODEL_NAME)]() {\r\n\t\t\treturn false;\r\n\t\t},\r\n\t});\r\n\r\n/**\r\n * Bewaar of een update nog een het laden is\r\n *\r\n * @return Boolean\r\n */\r\nexport const isUpdateLoading = MODEL_NAME =>\r\n\tcreateReducer(false, {\r\n\t\t[types.SUBMIT_UPDATE_REQUEST(MODEL_NAME)]() {\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\t[types.SUBMIT_UPDATE_SUCCESS(MODEL_NAME)]() {\r\n\t\t\treturn false;\r\n\t\t},\r\n\t\t[types.SUBMIT_UPDATE_FAILURE(MODEL_NAME)]() {\r\n\t\t\treturn false;\r\n\t\t},\r\n\t});\r\n\r\n/**\r\n * Bewaar of een update nog een het laden is\r\n *\r\n * @return Boolean\r\n */\r\nexport const isRecordLoading = MODEL_NAME =>\r\n\tcreateReducer(false, {\r\n\t\t[types.LOAD_RECORD_REQUEST(MODEL_NAME)]() {\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\t[types.LOAD_RECORD_SUCCESS(MODEL_NAME)]() {\r\n\t\t\treturn false;\r\n\t\t},\r\n\t\t[types.LOAD_RECORD_FAILURE(MODEL_NAME)]() {\r\n\t\t\treturn false;\r\n\t\t},\r\n\t});\r\n\r\n/**\r\n * Bewaar het geselecteerde ID\r\n *\r\n * @param Integer id\r\n * @return Integer\r\n */\r\nexport const selected = MODEL_NAME =>\r\n\tcreateReducer(null, {\r\n\t\t[types.SELECT(MODEL_NAME)](state, action) {\r\n\t\t\treturn action.payload;\r\n\t\t},\r\n\t\t[types.DESELECT(MODEL_NAME)]() {\r\n\t\t\treturn null;\r\n\t\t},\r\n\t});\r\n\r\n/**\r\n * DEPRECATED: Bewaar het geselecteerde object\r\n *\r\n * @param Integer id\r\n * @return Integer\r\n */\r\nexport const selectedObject = MODEL_NAME =>\r\n\tcreateReducer(null, {\r\n\t\t[types.SELECT_OBJECT(MODEL_NAME)](state, action) {\r\n\t\t\treturn action.payload.id;\r\n\t\t},\r\n\t\t[types.DESELECT_OBJECT(MODEL_NAME)]() {\r\n\t\t\treturn null;\r\n\t\t},\r\n\t});\r\n\r\n// =============================================================================\r\n// EXPORTS\r\n// =============================================================================\r\n\r\nexport const getExports = MODEL_NAME =>\r\n\tObject.assign(\r\n\t\t{},\r\n\t\t{\r\n\t\t\tisDirty: isDirty(MODEL_NAME),\r\n\t\t\tisListLoading: isListLoading(MODEL_NAME),\r\n\t\t\tisUpdateLoading: isUpdateLoading(MODEL_NAME),\r\n\t\t\tselected: selected(MODEL_NAME),\r\n\t\t\tselectedObject: selectedObject(MODEL_NAME),\r\n\t\t}\r\n\t);\r\n","import { createSelector } from 'redux-orm';\r\nimport { camelCase, get } from 'lodash';\r\nimport { orm } from 'state/orm/';\r\n\r\n// =============================================================================\r\n// STATE\r\n// =============================================================================\r\n\r\nconst stateSelector = ({ state }) => state.db;\r\n\r\n// =============================================================================\r\n// SELECTORS\r\n// =============================================================================\r\n\r\n/**\r\n * Haal alle items op die voldoen aan de meegestuurde filters\r\n *\r\n * @param Array filters\r\n * @return Array\r\n */\r\nexport const find = MODEL_NAME =>\r\n\tcreateSelector(\r\n\t\torm,\r\n\t\tstateSelector,\r\n\t\tstate => state,\r\n\t\t(session, params) =>\r\n\t\t\tsession[MODEL_NAME].all()\r\n\t\t\t\t.filter(record => {\r\n\t\t\t\t\tif (!params.filters) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn Object.keys(params.filters).filter(key => record[key] === params.filters[key]).length > 0;\r\n\t\t\t\t})\r\n\t\t\t\t.toRefArray()\r\n\t);\r\n\r\n/**\r\n * Haal op of een lijst nog aan het laden is\r\n *\r\n * @return Boolean\r\n */\r\nexport const isListLoading = MODEL_NAME =>\r\n\tcreateSelector(\r\n\t\torm,\r\n\t\tstateSelector,\r\n\t\tstate => state,\r\n\t\t(session, params) => {\r\n\t\t\tconst INSTANCE_NAME = camelCase(MODEL_NAME);\r\n\t\t\treturn params.state[INSTANCE_NAME].isListLoading;\r\n\t\t}\r\n\t);\r\n\r\n/**\r\n * Haal alle items op\r\n *\r\n * @return Array\r\n */\r\nexport const getList = MODEL_NAME =>\r\n\tcreateSelector(\r\n\t\torm,\r\n\t\tstateSelector,\r\n\t\tsession => session[MODEL_NAME].all().toRefArray()\r\n\t);\r\n\r\n/**\r\n * Haalt op of het object formulier gewijzigd is\r\n *\r\n * @param Integer id? OPTIONAL\r\n * @return Boolean\r\n */\r\nexport const isDirty = MODEL_NAME =>\r\n\tcreateSelector(\r\n\t\torm,\r\n\t\tstateSelector,\r\n\t\tstate => state,\r\n\t\t(session, params) => {\r\n\t\t\tconst INSTANCE_NAME = camelCase(MODEL_NAME);\r\n\t\t\treturn !params.id ? params.state[INSTANCE_NAME].isDirty.length > 0 : params.state[INSTANCE_NAME].isDirty.indexOf(params.id) > -1;\r\n\t\t}\r\n\t);\r\n\r\n/**\r\n * Haal het geselecteerde item op\r\n *\r\n * @param Integer selectedId\r\n * @return Object\r\n */\r\nexport const getSelected = MODEL_NAME =>\r\n\tcreateSelector(\r\n\t\torm,\r\n\t\tstateSelector,\r\n\t\tstate => state,\r\n\t\t(session, params) => {\r\n\t\t\tconst INSTANCE_NAME = camelCase(MODEL_NAME);\r\n\t\t\tconst keyValue = get(params, `state[${INSTANCE_NAME}].selected[${params.key}]`);\r\n\t\t\tif (session[MODEL_NAME].idExists(keyValue)) return session[MODEL_NAME].withId(keyValue).ref;\r\n\t\t\treturn null;\r\n\t\t}\r\n\t);\r\n\r\n/**\r\n * Haal op of een update nog aan het laden is\r\n *\r\n * @return Boolean\r\n */\r\nexport const isUpdateLoading = MODEL_NAME =>\r\n\tcreateSelector(\r\n\t\torm,\r\n\t\tstateSelector,\r\n\t\tstate => state,\r\n\t\t(session, params) => {\r\n\t\t\tconst INSTANCE_NAME = camelCase(MODEL_NAME);\r\n\t\t\treturn params.state[INSTANCE_NAME].isUpdateLoading;\r\n\t\t}\r\n\t);\r\n\r\n// =============================================================================\r\n// EXPORTS\r\n// =============================================================================\r\n\r\nexport const getExports = MODEL_NAME =>\r\n\tObject.assign(\r\n\t\t{},\r\n\t\t{\r\n\t\t\tfind: find(MODEL_NAME),\r\n\t\t\tgetList: getList(MODEL_NAME),\r\n\t\t\tgetSelected: getSelected(MODEL_NAME),\r\n\t\t\tisDirty: isDirty(MODEL_NAME),\r\n\t\t\tisListLoading: isListLoading(MODEL_NAME),\r\n\t\t\tisUpdateLoading: isUpdateLoading(MODEL_NAME),\r\n\t\t}\r\n\t);\r\n","import * as actions from './actions';\r\nimport * as reducers from './reducers';\r\nimport * as selectors from './selectors';\r\n\r\nexport { actions, reducers, selectors };\r\n","import { snakeCase } from 'lodash';\r\n\r\n// ACTION TYPES\r\nexport const REMOVE = MODEL_NAME => `base/${snakeCase(MODEL_NAME).toUpperCase()}_REMOVE`;\r\nexport const INSERT = MODEL_NAME => `base/${snakeCase(MODEL_NAME).toUpperCase()}_INSERT`;\r\nexport const UPDATE = MODEL_NAME => `base/${snakeCase(MODEL_NAME).toUpperCase()}_UPDATE`;\r\nexport const SELECT = MODEL_NAME => `base/${snakeCase(MODEL_NAME).toUpperCase()}_SELECT`;\r\nexport const DESELECT = MODEL_NAME => `base/${snakeCase(MODEL_NAME).toUpperCase()}_DESELECT`;\r\nexport const SELECT_OBJECT = MODEL_NAME => `base/${snakeCase(MODEL_NAME).toUpperCase()}_SELECT_OBJECT`;\r\nexport const DESELECT_OBJECT = MODEL_NAME => `base/${snakeCase(MODEL_NAME).toUpperCase()}_DESELECT_OBJECT`;\r\nexport const IS_CLEAN = MODEL_NAME => `base/${snakeCase(MODEL_NAME).toUpperCase()}IS_CLEAN`;\r\nexport const IS_DIRTY = MODEL_NAME => `base/${snakeCase(MODEL_NAME).toUpperCase()}IS_DIRTY`;\r\n\r\n// SERVER ACTION TYPES\r\nexport const LOAD_LIST_REQUEST = MODEL_NAME => `base/LOAD_LIST_${snakeCase(MODEL_NAME).toUpperCase()}_REQUEST`;\r\nexport const LOAD_LIST_SUCCESS = MODEL_NAME => `base/LOAD_LIST_${snakeCase(MODEL_NAME).toUpperCase()}_SUCCESS`;\r\nexport const LOAD_LIST_FAILURE = MODEL_NAME => `base/LOAD_LIST_${snakeCase(MODEL_NAME).toUpperCase()}_FAILURE`;\r\n\r\nexport const REFRESH_LIST_REQUEST = MODEL_NAME => `base/REFRESH_LIST_${snakeCase(MODEL_NAME).toUpperCase()}_REQUEST`;\r\nexport const REFRESH_LIST_SUCCESS = MODEL_NAME => `base/REFRESH_LIST_${snakeCase(MODEL_NAME).toUpperCase()}_SUCCESS`;\r\nexport const REFRESH_LIST_FAILURE = MODEL_NAME => `base/REFRESH_LIST_${snakeCase(MODEL_NAME).toUpperCase()}_FAILURE`;\r\n\r\nexport const UPDATE_LIST_REQUEST = MODEL_NAME => `base/UPDATE_LIST_${snakeCase(MODEL_NAME).toUpperCase()}_REQUEST`;\r\nexport const UPDATE_LIST_SUCCESS = MODEL_NAME => `base/UPDATE_LIST_${snakeCase(MODEL_NAME).toUpperCase()}_SUCCESS`;\r\nexport const UPDATE_LIST_FAILURE = MODEL_NAME => `base/UPDATE_LIST_${snakeCase(MODEL_NAME).toUpperCase()}_FAILURE`;\r\n\r\nexport const LOAD_RECORD_REQUEST = MODEL_NAME => `base/LOAD_RECORD_${snakeCase(MODEL_NAME).toUpperCase()}_REQUEST`;\r\nexport const LOAD_RECORD_SUCCESS = MODEL_NAME => `base/LOAD_RECORD_${snakeCase(MODEL_NAME).toUpperCase()}_SUCCESS`;\r\nexport const LOAD_RECORD_FAILURE = MODEL_NAME => `base/LOAD_RECORD_${snakeCase(MODEL_NAME).toUpperCase()}_FAILURE`;\r\n\r\nexport const SUBMIT_INSERT_REQUEST = MODEL_NAME => `base/SUBMIT_INSERT_${snakeCase(MODEL_NAME).toUpperCase()}_REQUEST`;\r\nexport const SUBMIT_INSERT_SUCCESS = MODEL_NAME => `base/SUBMIT_INSERT_${snakeCase(MODEL_NAME).toUpperCase()}_SUCCESS`;\r\nexport const SUBMIT_INSERT_FAILURE = MODEL_NAME => `base/SUBMIT_INSERT_${snakeCase(MODEL_NAME).toUpperCase()}_FAILURE`;\r\n\r\nexport const SUBMIT_UPDATE_REQUEST = MODEL_NAME => `base/SUBMIT_UPDATE_${snakeCase(MODEL_NAME).toUpperCase()}_REQUEST`;\r\nexport const SUBMIT_UPDATE_SUCCESS = MODEL_NAME => `base/SUBMIT_UPDATE_${snakeCase(MODEL_NAME).toUpperCase()}_SUCCESS`;\r\nexport const SUBMIT_UPDATE_FAILURE = MODEL_NAME => `base/SUBMIT_UPDATE_${snakeCase(MODEL_NAME).toUpperCase()}_FAILURE`;\r\n","import { ORM } from 'redux-orm';\r\nimport Blocco from './blocco/models';\r\nimport GameConfig from './gameConfig/models';\r\nimport Readspeaker from './readspeaker/models';\r\n\r\nexport const orm = new ORM();\r\norm.register(Blocco);\r\norm.register(GameConfig);\r\norm.register(Readspeaker);\r\n\r\nexport default orm;\r\n","import { attr } from 'redux-orm';\r\nimport BaseModel from 'state/orm/base/models';\r\n// import { types } from './types';\r\n\r\n/**\r\n * Create Model\r\n */\r\nexport default class Blocco extends BaseModel {\r\n\tstatic reducer(action, ModelType) {\r\n\t\tBaseModel.reducer(action, ModelType);\r\n\r\n\t\t// const { type } = action;\r\n\t\t// switch (type) {\r\n\t\t// \tcase types.TEST_ACTION: {\r\n\t\t// \t\t// ...\r\n\t\t// \t\tbreak;\r\n\t\t// \t}\r\n\t\t// \tdefault: {\r\n\t\t// \t\t// Do nothing\r\n\t\t// \t}\r\n\t\t// }\r\n\t}\r\n\r\n\tstatic get modelName() {\r\n\t\treturn 'Blocco';\r\n\t}\r\n\r\n\tstatic get fields() {\r\n\t\treturn { id: attr() };\r\n\t}\r\n}\r\n","import { attr } from 'redux-orm';\r\nimport BaseModel from 'state/orm/base/models';\r\n// import { types } from './types';\r\n\r\n/**\r\n * Create Model\r\n */\r\nexport default class Readspeaker extends BaseModel {\r\n\tstatic reducer(action, ModelType) {\r\n\t\tBaseModel.reducer(action, ModelType);\r\n\r\n\t\t// const { type } = action;\r\n\t\t// switch (type) {\r\n\t\t// \tcase types.TEST_ACTION: {\r\n\t\t// \t\t// ...\r\n\t\t// \t\tbreak;\r\n\t\t// \t}\r\n\t\t// \tdefault: {\r\n\t\t// \t\t// Do nothing\r\n\t\t// \t}\r\n\t\t// }\r\n\t}\r\n\r\n\tstatic get modelName() {\r\n\t\treturn 'Readspeaker';\r\n\t}\r\n\r\n\tstatic get fields() {\r\n\t\treturn { id: attr() };\r\n\t}\r\n}\r\n","import { Model } from 'redux-orm';\r\nimport { get, has } from 'lodash';\r\nimport * as types from './types';\r\n\r\n// =============================================================================\r\n// MODEL : GameType\r\n// =============================================================================\r\n\r\nexport class BaseModel extends Model {\r\n\tstatic reducer(action, ModelType) {\r\n\t\tconst { type } = action;\r\n\t\tswitch (type) {\r\n\t\t\tcase types.LOAD_LIST_SUCCESS(ModelType.modelName): {\r\n\t\t\t\tfor (const record of action.payload.data) {\r\n\t\t\t\t\tModelType.upsert(record);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\t// case types.REFRESH_LIST_SUCCESS(ModelType.modelName): {\r\n\t\t\t// \tModelType.all().delete();\r\n\t\t\t// \t// console.log( type, ModelType.modelName, record );\r\n\t\t\t// \tfor (const record of action.payload.data) {\r\n\t\t\t// \t\tModelType.create(record);\r\n\t\t\t// \t}\r\n\t\t\t// \tbreak;\r\n\t\t\t// }\r\n\t\t\t// case types.UPDATE_LIST_SUCCESS(ModelType.modelName): {\r\n\t\t\t// \tfor (const record of action.payload.data) {\r\n\t\t\t// \t\tModelType.upsert(record);\r\n\t\t\t// \t}\r\n\t\t\t// \tbreak;\r\n\t\t\t// }\r\n\t\t\tcase types.INSERT(ModelType.modelName): {\r\n\t\t\t\tModelType.upsert(Object.assign(action.payload));\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase types.UPDATE(ModelType.modelName): {\r\n\t\t\t\tif (!ModelType.idExists(action.payload.id)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tModelType.withId(action.payload.id).update(Object.assign(action.payload));\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase types.REMOVE(ModelType.modelName): {\r\n\t\t\t\tconsole.log(ModelType, action.payload, ModelType.exists(action.payload));\r\n\t\t\t\tif (!ModelType.exists(action.payload)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tModelType.get(action.payload).delete();\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase types.SUBMIT_UPDATE_SUCCESS(ModelType.modelName): {\r\n\t\t\t\tif (get(action, 'payload.data.id')) {\r\n\t\t\t\t\tModelType.upsert(action.payload.data);\r\n\t\t\t\t\t// ModelType.withId(action.payload.data.id).update(Object.assign(action.payload.data, { saved_state: 1 }));\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase types.LOAD_RECORD_SUCCESS(ModelType.modelName): {\r\n\t\t\t\tconst data = get(action, 'payload.data');\r\n\t\t\t\tif (!has(data, 'id')) throw new Error('The property `id` is missing.');\r\n\t\t\t\tif (data) {\r\n\t\t\t\t\tModelType.upsert(data);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tdefault: {\r\n\t\t\t\t// Do nothing\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default BaseModel;\r\n","import { get } from 'lodash';\n\nconst REGULAR = ['background: blue', 'color: white'].join(';');\nconst SUCCESS = ['background: green', 'color: white'].join(';');\nconst STARTED = ['background: darkorange', 'color: white'].join(';');\nconst FAILURE = ['background: red', 'color: white'].join(';');\n\nfunction logGroupCollapsed(...args) {\n\tconst logFunction = typeof console.groupCollapsed === 'function' ? console.groupCollapsed : console.info;\n\tlogFunction(...args);\n}\n\nfunction logGroupEnd(...args) {\n\tconst logFunction = typeof console.groupEnd === 'function' ? console.groupEnd : console.info;\n\tlogFunction(...args);\n}\n\nfunction logInfo(...args) {\n\tconsole.info(...args);\n}\n\nfunction determineStyle(action) {\n\tif (!action.meta || !action.meta.async) {\n\t\treturn REGULAR;\n\t}\n\n\tif (action.type.indexOf('_COMPLETED') > -1) {\n\t\treturn SUCCESS;\n\t}\n\n\tif (action.type.indexOf('_FAILED') > -1) {\n\t\treturn FAILURE;\n\t}\n\n\treturn STARTED;\n}\n\nconst createLogger = (active = true) => store => next => action => {\n\tif (!active) {\n\t\treturn next(action);\n\t}\n\tconst prevState = store.getState();\n\tconst result = next(action);\n\tconst nextState = store.getState();\n\tlogGroupCollapsed(`%c ${action.type} `, determineStyle(action));\n\tlogInfo('%cprev state', 'color: darkorange', prevState);\n\tif (action.error) {\n\t\tlogInfo('%caction action', 'color: red', action);\n\t\tlogInfo('%caction response', 'color: darkRed', get(action, 'payload.response'));\n\t} else {\n\t\tlogInfo('%caction payload', 'color: blue', action.payload);\n\t}\n\tlogInfo('%cnext state', 'color: darkgreen', nextState);\n\tlogGroupEnd();\n\n\t/**\n\t * Show dumps outside goup\n\t */\n\tif (action.error) {\n\t\tif (get(action, 'payload.response.debugger')) logInfo('%caction debugger', 'color: red', action.payload.response.debugger);\n\t} else if (get(action, 'payload.debugger')) logInfo('%caction debugger', 'color: purple', action.payload.debugger);\n\n\treturn result;\n};\n\nexport default createLogger;\n","import { isRSAA, RSAA } from 'redux-api-middleware';\r\n\r\nconst callApiMiddleware = store => next => action => {\r\n\t// skip everything which is not API call\r\n\tif (!isRSAA(action)) {\r\n\t\treturn next(action);\r\n\t}\r\n\r\n\t// Get instance\r\n\tconst rsaa = action[RSAA];\r\n\r\n\t// the session info from store\r\n\t// const { session } = store.getState();\r\n\r\n\trsaa.credentials = 'include';\r\n\r\n\t// perform request\r\n\trsaa.headers = {\r\n\t\t...rsaa.headers,\r\n\t\tAccept: 'application/json',\r\n\t\t// ContentType: 'application/json',\r\n\t\t// dataType: 'jsonp',\r\n\t\t// responseType: 'application/json',\r\n\t\t// Authorization: `Bearer abc123`,\r\n\t\t// ...(session && { Authorization: `Bearer ${session && session.token}` }),\r\n\t};\r\n\r\n\t// Convert body to json string\r\n\tif (rsaa.body) {\r\n\t\tif (typeof rsaa.body === 'object') {\r\n\t\t\trsaa.body = JSON.stringify(rsaa.body);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Set root endpoint\r\n\t */\r\n\trsaa.endpoint = `//ldo-dev.onlineklas.nl${rsaa.endpoint}`;\r\n\tconsole.log(rsaa);\r\n\treturn next(action);\r\n};\r\n\r\nexport default callApiMiddleware;\r\n","import { combineReducers } from 'redux';\r\nimport { reducers as baseReducers } from 'state/orm/base';\r\n// import createReducer from 'utils/createReducer';\r\nimport Model from './models';\r\n// import * as types from './types';\r\n\r\n/**\r\n * Create base reducers\r\n */\r\nconst reducers = baseReducers.getExports(Model.modelName);\r\n\r\n/**\r\n * Demo reducer value\r\n */\r\n// reducers.testValue = createReducer(false, {\r\n// \t[types.TEST_ACTION]() {\r\n// \t\treturn true;\r\n// \t},\r\n// });\r\n\r\nexport default combineReducers(reducers);\r\n","import { createSelector } from 'redux-orm';\r\nimport { camelCase } from 'lodash';\r\nimport { orm } from 'state/orm';\r\nimport { selectors as baseSelectors } from 'state/orm/base';\r\nimport Model from './models';\r\n\r\n/**\r\n * Create default selector function\r\n */\r\nconst stateSelector = ({ state }) => state.db;\r\n\r\n/**\r\n * Create base selectors\r\n */\r\nconst selectors = baseSelectors.getExports(Model.modelName);\r\n\r\n/**\r\n * Demo custom selector\r\n */\r\nselectors.getTestList = createSelector(\r\n\torm,\r\n\tstateSelector,\r\n\tstate => state,\r\n\t(session, params) => {\r\n\t\tconst INSTANCE_NAME = camelCase(Model.modelName);\r\n\t\treturn params.state[INSTANCE_NAME].list;\r\n\t}\r\n);\r\n\r\nexport default selectors;\r\n","import { actions as baseActions } from 'state/orm/base';\r\nimport Model from './models';\r\n\r\n/**\r\n * Basic actions\r\n */\r\nconst actions = baseActions.getExports(Model.modelName);\r\n\r\n/**\r\n * Export all\r\n */\r\nexport default actions;\r\n","import reducer from './reducers';\r\nimport * as actions from './actions';\r\nimport * as selectors from './selectors';\r\n\r\nexport { actions, selectors };\r\n\r\nexport default reducer;\r\n","import { createReducer } from 'redux-orm';\r\nimport { orm } from './index';\r\n\r\nexport { default as blocco } from './blocco';\r\nexport { default as gameConfig } from './gameConfig';\r\nexport { default as readspeaker } from './readspeaker';\r\n\r\nexport const db = createReducer(orm);\r\n","import { createStore, applyMiddleware, combineReducers, compose } from 'redux';\r\nimport thunkMiddleware from 'redux-thunk';\r\nimport { apiMiddleware } from 'redux-api-middleware';\r\nimport { loggerMiddleware, reduxApiMiddleware } from 'state/middleware';\r\nimport * as ormReducers from 'state/orm/reducers';\r\n\r\nconst configureStore = initialState => {\r\n\tconst rootReducer = combineReducers(Object.assign({}, ormReducers));\r\n\tconst enhancer = compose(applyMiddleware(thunkMiddleware, reduxApiMiddleware, apiMiddleware, loggerMiddleware(true)));\r\n\treturn createStore(rootReducer, initialState, enhancer);\r\n};\r\n\r\nconst store = configureStore({});\r\n\r\nexport default store;\r\n","import React, { useContext } from 'react';\r\nimport { Provider } from 'react-redux';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport { ThemeProvider } from '@material-ui/styles';\r\nimport { createMuiTheme } from '@material-ui/core/styles';\r\nimport CssBaseline from '@material-ui/core/CssBaseline';\r\nimport { ThemeContextProvider, ThemeContext } from 'state/context/ThemeProvider';\r\nimport store from 'state/store';\r\nimport 'typeface-muli';\r\n\r\nconst styles = {\r\n\tLettertrein: 1,\r\n\tLDO: 2,\r\n};\r\n\r\n/**\r\n * Lettertrein theme\r\n */\r\nconst themeOverrides = {\r\n\t[styles.LDO]: {\r\n\t\t// overrides: {\r\n\t\t// \tMuiFab: {\r\n\t\t// \t\troot: {\r\n\t\t// \t\t\tborderRadius: '40%',\r\n\t\t// \t\t},\r\n\t\t// \t},\r\n\t\t// },\r\n\t},\r\n\t[styles.Lettertrein]: {\r\n\t\toverrides: {\r\n\t\t\tMuiButton: {\r\n\t\t\t\tcontained: {\r\n\t\t\t\t\tborder: '3px solid rgba(255,255,255,0.7)',\r\n\t\t\t\t\tbackgroundSize: 'cover',\r\n\t\t\t\t\t'&:hover': {\r\n\t\t\t\t\t\tborderColor: 'rgba(255,255,255,1)',\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tcontainedPrimary: {\r\n\t\t\t\t\tbackgroundImage: 'url(\"/assets/graphics/lettertrein/button-bg/h.jpg\")',\r\n\t\t\t\t},\r\n\t\t\t\tcontainedSecondary: {\r\n\t\t\t\t\tbackgroundImage: 'url(\"/assets/graphics/lettertrein/button-bg/a.jpg\")',\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tMuiFab: {\r\n\t\t\t\troot: {\r\n\t\t\t\t\tborder: '3px solid rgba(255,255,255,0.7)',\r\n\t\t\t\t\tborderRadius: '1%',\r\n\t\t\t\t\tbackgroundSize: 'cover',\r\n\t\t\t\t\t'&:hover': {\r\n\t\t\t\t\t\tborderColor: 'rgba(255,255,255,1)',\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tprimary: {\r\n\t\t\t\t\tbackgroundImage: 'url(\"/assets/graphics/lettertrein/button-bg/h.jpg\")',\r\n\t\t\t\t},\r\n\t\t\t\tsecondary: {\r\n\t\t\t\t\tbackgroundImage: 'url(\"/assets/graphics/lettertrein/button-bg/a.jpg\")',\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n};\r\n\r\n/**\r\n * Create inner provider\r\n */\r\nfunction InnerProvider({ children }) {\r\n\t/**\r\n\t * First get the theme context with its default propertie overrides\r\n\t */\r\n\tconst { themeState } = useContext(ThemeContext);\r\n\r\n\t/**\r\n\t * Then override theme specific properties, based on the style\r\n\t */\r\n\tconst themeProps = { ...themeState, ...themeOverrides[themeState.style] };\r\n\t// console.log('themeState', themeProps);\r\n\r\n\t/**\r\n\t * Return JSX\r\n\t */\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{children}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n\r\n/**\r\n * Create outer provider\r\n */\r\nfunction Providers(props) {\r\n\t/**\r\n\t * Return JSX\r\n\t */\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n\r\nexport default Providers;\r\n","import React from 'react';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport Providers from 'bootstrap/Providers';\n\nconst Shell = React.lazy(() => import('views/layout/Shell'));\nconst ShellLoader = (\n\t}>\n\t\t\n\t\n);\n\nfunction Bootstrap() {\n\t/**\n\t * Return JSX\n\t */\n\treturn {ShellLoader};\n}\n\nexport default Bootstrap;\n","// 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 http://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.1/8 is 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 http://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 http://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 .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.then(registration => {\n registration.unregister();\n });\n }\n}\n","import 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport 'assets/scss/index.css';\nimport Bootstrap from 'bootstrap';\nimport * as serviceWorker from 'serviceWorker';\n\nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: http://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","import { attr } from 'redux-orm';\r\nimport BaseModel from 'state/orm/base/models';\r\n// import { types } from './types';\r\n\r\n/**\r\n * Create Model\r\n */\r\nexport default class GameConfig extends BaseModel {\r\n\tstatic reducer(action, ModelType) {\r\n\t\tBaseModel.reducer(action, ModelType);\r\n\r\n\t\t// const { type } = action;\r\n\t\t// switch (type) {\r\n\t\t// \tcase types.TEST_ACTION: {\r\n\t\t// \t\t// ...\r\n\t\t// \t\tbreak;\r\n\t\t// \t}\r\n\t\t// \tdefault: {\r\n\t\t// \t\t// Do nothing\r\n\t\t// \t}\r\n\t\t// }\r\n\t}\r\n\r\n\tstatic get modelName() {\r\n\t\treturn 'GameConfig';\r\n\t}\r\n\r\n\tstatic get fields() {\r\n\t\treturn { id: attr() };\r\n\t}\r\n}\r\n"],"sourceRoot":""}