{"version":3,"sources":["redux/auth/auth.selectors.js","redux/auth/auth.types.js","app.util.js","components/LockCover/LockCover.jsx","redux/boot/boot.selectors.js","redux/boot/boot.types.js","redux/auth/auth.user.js","config/strings.js","components/BootLogo/BootLogo.jsx","components/Button/Button.jsx","pages/SwitchUser/LoginView.jsx","pages/SwitchUser/SwitchUser.jsx","redux/boot/boot.actions.js","redux/auth/auth.actions.js","pages/BootScreen/BootScreen.jsx","pages/NewAccount/ChildView.jsx","pages/NewAccount/NewAccount.jsx","components/Clock/Clock.jsx","components/TaskBar/TaskBar.jsx","components/StartMenu/Promotions.jsx","softwares/Calculator/Calculator.jsx","softwares/Calender/Calender.jsx","softwares/Explorer/components/Ribbon/Ribbon.jsx","softwares/Explorer/components/Sidebar/Sidebar.jsx","softwares/Explorer/components/Icon/Icon.jsx","softwares/Explorer/components/Directory/Directory.jsx","redux/account/account.selectors.js","redux/account/account.types.js","softwares/Explorer/Explorer.jsx","redux/account/account.actions.js","softwares/Notepad/Notepad.jsx","softwares/Settings/Settings.jsx","config/apps.js","components/StartMenu/StartMenu.jsx","components/TitleBar/TitleBar.jsx","components/MenuBar/MenuBar.jsx","disk/disk.connect.js","disk/disk.dispatch.js","disk/disk.write.js","disk/disk.read.js","disk/index.js","pages/Program/Program.jsx","redux/memory/memory.types.js","redux/memory/memory.action.js","redux/memory/memory.selectors.js","components/Loading/Loading.jsx","pages/Desktop/Desktop.jsx","App.js","redux/auth/auth.utils.js","redux/auth/index.js","config/wallpapers.js","redux/boot/boot.utils.js","redux/boot/index.js","redux/account/account.utils.js","redux/account/account.fs.js","redux/account/index.js","redux/memory/memory.utils.js","redux/memory/index.js","redux/reducer.js","redux/store.js","index.js"],"names":["authState","state","auth","selectUsers","store","users","selectActiveUser","activeUser","selectAuthError","error","selectAuthSuccess","success","AuthActionTypes","CHECK_USER_SESSION","CREATE_NEW_ACCOUNT","SIGN_IN","LOGOUT_USER","subscribeClock","onUpdate","currentDateTime","Date","clockRef","setTimeout","setInterval","getSeconds","unsubscribeClock","clearInterval","formatDateTime","dateTime","dateOptions","timeOptions","time","toLocaleTimeString","date","toLocaleDateString","hour12suffix","replace","weekday","month","day","hour12","hour","minute","LockCover","background","onDoneLoading","autoHide","useState","classes","updateClass","opacity","updateOpacity","styles","backgroundImage","process","updateCurrentDateTime","dateTimeFormat","onPressEscape","event","key","useEffect","handler","on","document","addEventListener","addKeyListener","removeEventListener","removeKeyListener","className","style","onClick","selectBootBackgrounds","boot","backgrounds","BootActionTypes","GET_BACKGROUNDS","SET_LOCK_SCREEN_BACKGROUND","SET_LOGIN_SCREEN_BACKGROUND","getName","user","name","getUsername","username","Strings","INCORRECT_PASSWORD","LOGIN_LINK_SIGNUP_VIEW","SIGNUP_LINK_LOGIN_VIEW","SIGNUP_NAME_VIEW_TITLE","SIGNUP_NAME_VIEW_SUBTITLE","SIGNUP_PASSWORD_VIEW_TITLE","SIGNUP_PASSWORD_VIEW_SUBTITLE","SUCCESSFUL_LOGIN_WELCOME_TEXT","TASKBAR_SEARCH_PLACEHOLDER","PC_FILESYSTEM_ROOT_NAME","BootLogo","props","size","componentSizes","loader","circle","loaderStyle","height","width","circleStyle","Array","map","_","i","Button","classNames","text","type","concat","join","LoginError","onCancel","LoginSuccess","LoginForm","onSubmit","isHiddenPassword","togglePasswordMode","password","updatePassword","required","value","onChange","e","target","onKeyUp","placeholder","onMouseDown","onMouseUp","LoginView","onLogin","authError","authSuccess","selectedUser","changeSelectedUser","showError","toggleShowError","to","length","ind","current","SwitchUser","useSelector","hasDoneLoading","dispatch","useDispatch","location","useLocation","history","useHistory","push","userIndex","payload","signInUser","login","lock","URLSearchParams","search","get","BootScreen","ChildView","childClass","onFieldUpdate","signInOpt","details","validity","title","subtitle","maxLength","disabled","NewAccount","profileName","updateName","profilePassword","currentView","updateCurrentView","val","filter","Clock","TaskBarAppInstances","apps","programs","data","onIconClick","onInstanceClick","onCloseInstance","Instances","instances","instance","App","app","id","icon","TaskBar","programsData","onMindowsClick","Promotions","FcGoogle","action","FaAmazon","FaChrome","FaDropbox","FaFacebookF","FaFirefoxBrowser","FaGithub","FaSkype","WiDaySunny","SiMicrosoftword","FcSteam","FcCamera","FaMicrosoft","FcNews","MdMovieCreation","FaXbox","FcMusic","FcBearish","FcPicture","Calculator","Calender","CategoryClipboard","disabledPaste","onCopyItems","onCutItems","onPasteItems","disabledCopyOrCut","fill","CategoryOrganize","onDeleteItem","onRenameItem","CategoryNew","onCreate","alt","src","CategoryOpen","CategorySelect","onSelectAll","onSelectNone","stroke","Ribbon","disableAll","selectedItems","isClipboardEmpty","onCreateItem","isFileSelected","isDir","Sidebar","React","memo","selectedItem","rootDirectoryData","onSelectItem","onGoToDirectory","directoryData","updateDirectoryData","SideNavbarItem","item","prevProps","nextProps","Icon","defaultName","formatDirectoryItems","items","newItemMode","itemType","Directory","clipboard","isRootDirectory","onDoubleClick","createMode","renameMode","onCancelRename","onOpenDocument","newName","updateNewName","inputRef","useRef","dirItems","focus","toBeRenamed","includes","role","tabIndex","extension","ref","toName","onBlur","accountState","account","selectAccountSettings","settings","selectTaskBarApps","taskbarApps","selectDefaultApps","defaultApps","AccountActionTypes","LOAD_ACCOUNT","GET_ACCOUNT_SETTINGS","GET_FILESYSTEM","SAVE_ACCOUNT","CREATE_NEW_DIR_ITEM","RENAME_DIR_ITEM","DELETE_DIR_ITEM","COPY_DIR_ITEM","MOVE_DIR_ITEM","rootDir","Explorer","currentDir","updateCurrentDir","fs","filesystem","children","child","node","updateSelected","chosenCategory","chooseCategory","updateCreateMode","updateRenameMode","mode","updateClipboard","ids","path","toPath","itemIds","copyDirectoryItems","renameDirectoryItems","STORENAME","Notepad","docId","onTerminate","updateProgramData","getProgramData","createMenubar","textRef","updateText","onExit","wordWrap","onToggleWordWrap","whiteSpace","res","content","menu","onSave","onWordWrap","submenu","toggleValue","formMenubarItems","defaultValue","Settings","InstalledApps","calculator","FcCalculator","component","config","initWindowWidth","initWindowHeight","calendar","FcCalendar","fsexplorer","FcFolder","perms","OPEN_DOCUMENT","notepad","FcDocument","initTitle","VscSettingsGear","StartMenuDrawer","onLogout","onLaunchApp","drawer","toggleDrawer","active","toString","StartMenuApps","Apps","category","Category","smApps","Object","keys","Set","toLowerCase","sort","forEach","c","toUpperCase","cat","StartMenuPromotions","promotions","j","Math","floor","random","pr","colors","Blocks","list","href","wsize","slice","hide","StartMenu","onProgramClick","bottom","TitleBar","programId","isMaximized","onMinimize","onMaximize","onRestore","MenuBar","MenubarSubmenu","subitem","MenubarItem","currentTarget","parentNode","blur","indexedDB","window","mozIndexedDB","webkitIndexedDB","msIndexedDB","connectIDB","DB_NAME","DB_VERSION","Promise","resolve","reject","request","open","onupgradeneeded","db","result","console","log","objectStoreNames","contains","createObjectStore","onsuccess","onerror","onblocked","Error","dispatchIDB","a","then","connectRes","catch","err","close","writeInIDB","query","transaction","objectStore","put","searchInIDB","DISK","callback","windowWidth","innerWidth","windowHeight","innerHeight","ProgramComponent","Program","programRef","version","disk","onClickWindow","pId","h","w","delta","x","y","reset","defaultStyle","dimensions","updateDimensions","onDrag","ui","deltaX","deltaY","handle","bounds","nodeRef","position","zIndex","display","isMinimized","top","left","right","MemoryActionTypes","START_NEW_PROGRAM","TERMINATE_PROGRAM","startNewProgram","metadata","terminateProgram","memoryState","memory","selectAppsInstances","appsInstances","selectProgramsData","Loading","message","Desktop","accountSettings","startMenu","toggleStartMenu","logoutMode","startLogoutMode","loadAccount","saveAccount","runningPrograms","maxZIndex","windows","updateWindows","minimized","updateMinimized","taskbarAndOpenedApps","taskbarAppsData","appId","onClickProgramWindow","onToggleMinimize","newMinimized","assign","onStartNewProgram","ext","fadeInTime","_pId","onSelectFromTaskBar","exact","render","pathname","storageKeys","checkForStoredUser","localStorage","getItem","JSON","parse","saveNewUser","setItem","stringify","safeguardUser","PublicUser","initialState","AuthReducer","newUsers","signInSuccess","__id","getTime","Wallpapers","description","defaultWallpaper","getLockScreenBackground","getLoginScreenBackground","BootReducer","lockBackground","loginBackground","getAccountFromStorage","saveAccountInStorage","linkNodes","childNodes","newFs","newChildren","renameNodes","unlinkNodes","cId","copyNodes","toParentNode","moveNodes","fromParentNode","generateRandomId","len","characters","modifiedTime","createdTime","File","indexOf","substr","lastIndexOf","substring","Node","parent","mTime","_root","AccountReducer","loadedAccount","activeAccount","newNode","itemsId","idsToDelete","idsToCopy","nodesToCopy","idsToMove","fromPath","nodesToMove","loadProgram","program","uniqueId","updateProgramsData","newProgram","newData","updateAppsInstances","newInstances","removeProgram","removeAppInstance","instanceId","MemoryReducer","reducer","combineReducers","createStore","ReactDOM","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.696e3d15.chunk.js","sourcesContent":["const authState = (state) => state.auth;\n\nexport const selectUsers = (store) => authState(store).users;\n\nexport const selectActiveUser = (store) => authState(store).activeUser;\n\nexport const selectAuthError = (store) => authState(store).error;\n\nexport const selectAuthSuccess = (store) => authState(store).success;\n","const AuthActionTypes = {\n CHECK_USER_SESSION: 'CHECK_USER_SESSION',\n CREATE_NEW_ACCOUNT: 'CREATE_NEW_ACCOUNT',\n SIGN_IN: 'SIGN_IN',\n LOGOUT_USER: 'LOGOUT_USER',\n};\n\nexport default AuthActionTypes;\n","export const addKeyListener = (handler, on = 'keydown') => {\n document.addEventListener(on, handler);\n};\n\nexport const removeKeyListener = (handler, on = 'keydown') => {\n document.removeEventListener(on, handler);\n};\n\nexport const subscribeClock = (onUpdate) => {\n const currentDateTime = new Date();\n let clockRef = setTimeout(() => {\n onUpdate(new Date());\n clockRef = setInterval(() => onUpdate(new Date()), 1000 * 60);\n }, (60 - currentDateTime.getSeconds()) * 1000);\n return clockRef;\n};\n\nexport const unsubscribeClock = (clockRef) => {\n clearInterval(clockRef);\n};\n\nexport const formatDateTime = (dateTime, dateOptions, timeOptions) => {\n const time = dateTime.toLocaleTimeString([], timeOptions);\n const date = dateTime.toLocaleDateString([], dateOptions);\n return {\n date,\n time: timeOptions.hour12suffix ? time : time.replace('AM', '').replace('PM', ''),\n };\n};\n","import { useEffect, useState } from 'react';\nimport {\n subscribeClock,\n unsubscribeClock,\n formatDateTime,\n addKeyListener,\n removeKeyListener,\n} from '../../app.util';\nimport './LockCover.scss';\n\nconst dateOptions = { weekday: 'long', month: 'long', day: 'numeric' };\nconst timeOptions = { hour12: true, hour: 'numeric', minute: '2-digit' };\n\nconst LockCover = ({ background, onDoneLoading, autoHide }) => {\n const [classes, updateClass] = useState(`LockCover${autoHide ? ' LockCoverHidden' : ''}`);\n const [opacity, updateOpacity] = useState(0);\n const styles = {\n backgroundImage: `url(${process.env.PUBLIC_URL}\"/images/${background}\")`,\n };\n const [currentDateTime, updateCurrentDateTime] = useState(new Date());\n const dateTimeFormat = formatDateTime(currentDateTime, dateOptions, timeOptions);\n\n // add escape key event listener\n const onPressEscape = (event) => {\n if (event.key === 'Escape') updateClass('LockCover');\n };\n\n useEffect(() => {\n addKeyListener(onPressEscape);\n setTimeout(() => updateOpacity(1), 1500);\n return () => removeKeyListener(onPressEscape);\n }, []);\n\n // set time interval for current time clock\n useEffect(() => {\n const clockRef = subscribeClock(updateCurrentDateTime);\n return () => unsubscribeClock(clockRef);\n }, []);\n\n useEffect(() => opacity && onDoneLoading(true), [opacity]);\n\n return (\n updateClass('LockCover LockCoverHidden')}\n >\n
\n

{dateTimeFormat.time}

\n

{dateTimeFormat.date}

\n
\n \n );\n};\n\nexport default LockCover;\n","const bootState = (state) => state.boot;\n\nexport const selectBootBackgrounds = (store) => bootState(store).backgrounds;\n","const BootActionTypes = {\n GET_BACKGROUNDS: 'GET_BACKGROUNDS',\n SET_LOCK_SCREEN_BACKGROUND: 'SET_LOwCK_SCREEN_BACKGROUND',\n SET_LOGIN_SCREEN_BACKGROUND: 'SET_LOGIN_SCREEN_BACKGROUND',\n};\n\nexport default BootActionTypes;\n","export const User = (name, username, password) => ({\n name,\n username,\n password,\n});\n\nexport const PublicUser = (user) => ({\n name: user.name,\n username: user.username,\n});\n\nexport const getName = (user) => user.name;\nexport const getUsername = (user) => user.username;\n","const Strings = {\n INCORRECT_PASSWORD: 'The password is incorrect. Try again.',\n LOGIN_LINK_SIGNUP_VIEW: 'Or, even better, sign-in',\n SIGNUP_LINK_LOGIN_VIEW: 'Sign-up options',\n SIGNUP_NAME_VIEW_TITLE: \"Who's going to use this PC?\",\n SIGNUP_NAME_VIEW_SUBTITLE: 'What name do you want to use?',\n SIGNUP_PASSWORD_VIEW_TITLE: 'Create a super memorable password',\n SIGNUP_PASSWORD_VIEW_SUBTITLE: \"Make sure to pick something you'll absolutely remember\",\n SUCCESSFUL_LOGIN_WELCOME_TEXT: 'Welcome',\n TASKBAR_SEARCH_PLACEHOLDER: 'Type here to search',\n PC_FILESYSTEM_ROOT_NAME: 'MY PC',\n};\n\nexport default Strings;\n","import './BootLogo.scss';\n\n/**\n * The following code is taken from codepen created by Fernando de Almeida Faria.\n * https://codepen.io/feebaa/pen/PPrLQP\n */\n\nconst BootLogo = (props) => {\n const { size = 'medium' } = { ...props };\n const componentSizes = {\n loader: size === 'medium' ? '48px' : '32px',\n circle: size === 'medium' ? '32px' : '24px',\n };\n\n const loaderStyle = { height: componentSizes.loader, width: componentSizes.loader };\n const circleStyle = { height: componentSizes.circle, width: componentSizes.circle };\n\n return (\n
\n {[...Array(5)].map((_, i) => (\n
\n ))}\n
\n );\n};\n\nexport default BootLogo;\n","import './Button.scss';\n\nconst Button = ({ styles, classNames, text, ...props }) => (\n \n {text}\n \n);\n\nexport default Button;\n","import React, { useEffect, useState } from 'react';\nimport { VscEye, VscArrowRight } from 'react-icons/vsc';\nimport { AiOutlineUser } from 'react-icons/ai';\nimport { Link } from 'react-router-dom';\n\nimport { getName, getUsername } from '../../redux/auth/auth.user';\nimport Strings from '../../config/strings';\nimport BootLogo from '../../components/BootLogo/BootLogo';\nimport Button from '../../components/Button/Button';\nimport './LoginView.scss';\n\nconst LoginError = ({ error, onCancel }) => (\n
\n {error.text}\n
\n);\n\nconst LoginSuccess = () => (\n
\n \n {Strings.SUCCESSFUL_LOGIN_WELCOME_TEXT}\n
\n);\n\nconst LoginForm = ({ onSubmit }) => {\n const [isHiddenPassword, togglePasswordMode] = useState(true);\n const [password, updatePassword] = useState('');\n\n return (\n
\n {false && (\n
\n \n
\n )}\n\n
\n updatePassword(e.target.value)}\n onKeyUp={(e) => e.key === 'Enter' && onSubmit(password)}\n type={isHiddenPassword ? 'password' : 'text'}\n placeholder=\"Password\"\n />\n\n togglePasswordMode(false)}\n onMouseUp={() => togglePasswordMode(true)}\n >\n \n
\n\n
onSubmit(password)}>\n \n
\n
\n
\n );\n};\n\nconst LoginView = ({ users, background, onLogin, authError, authSuccess }) => {\n const [selectedUser, changeSelectedUser] = useState(0);\n const styles = {\n backgroundImage: `url(${process.env.PUBLIC_URL}\"/images/${background}\")`,\n };\n const [showError, toggleShowError] = useState(authError);\n useEffect(() => toggleShowError(authError), [authError]);\n\n return (\n <>\n
\n
\n
\n
\n \n
\n
{users[selectedUser].name}
\n {showError ? (\n toggleShowError(false)} />\n ) : authSuccess ? (\n \n ) : (\n onLogin(selectedUser, password)} />\n )}\n {!authSuccess && (\n \n {Strings.SIGNUP_LINK_LOGIN_VIEW}\n \n )}\n
\n\n {!authSuccess && users.length > 1 && (\n
\n {users.map((user, ind) => (\n changeSelectedUser(ind)}\n >\n
\n \n
\n

{getName(user)}

\n \n ))}\n
\n )}\n
\n \n );\n};\n\nexport default LoginView;\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory, useLocation } from 'react-router-dom';\n\nimport LockCover from '../../components/LockCover/LockCover';\nimport { selectBootBackgrounds } from '../../redux/boot/boot.selectors';\nimport { signInUser } from '../../redux/auth/auth.actions';\nimport { selectAuthError, selectAuthSuccess } from '../../redux/auth/auth.selectors';\nimport { getBootBackgrounds } from '../../redux/boot/boot.actions';\nimport LoginView from './LoginView';\nimport './SwitchUser.scss';\n\nconst SwitchUser = ({ users }) => {\n const backgrounds = useSelector(selectBootBackgrounds);\n const authError = useSelector(selectAuthError);\n const authSuccess = useSelector(selectAuthSuccess);\n const [hasDoneLoading, onDoneLoading] = useState(false);\n const dispatch = useDispatch();\n const location = useLocation();\n const history = useHistory();\n\n useEffect(() => dispatch(getBootBackgrounds()), [dispatch]);\n useEffect(() => {\n if (authSuccess) {\n setTimeout(() => {\n history.push('/desktop');\n }, 2000);\n }\n }, [authSuccess]);\n\n const onLogin = (userIndex, password) => {\n dispatch(signInUser(userIndex, password));\n };\n\n return (\n <>\n {hasDoneLoading && (\n \n )}\n {backgrounds.lock && backgrounds.login && (\n setTimeout(() => onDoneLoading(to), 1000)}\n />\n )}\n \n );\n};\n\nexport default SwitchUser;\n","import BootActionTypes from './boot.types';\n\nexport const getBootBackgrounds = () => ({\n type: BootActionTypes.GET_BACKGROUNDS,\n});\n\nexport const setLockScreenBackground = () => ({\n type: BootActionTypes.SET_LOCK_SCREEN_BACKGROUND,\n});\n\nexport const setLoginScreenBackground = () => ({\n type: BootActionTypes.SET_LOGIN_SCREEN_BACKGROUND,\n});\n","import AuthActionTypes from './auth.types';\n\nexport const checkUserSession = () => ({\n type: AuthActionTypes.CHECK_USER_SESSION,\n});\n\nexport const createNewAccount = (userDetails) => ({\n type: AuthActionTypes.CREATE_NEW_ACCOUNT,\n payload: userDetails,\n});\n\nexport const signInUser = (userIndex, password) => ({\n type: AuthActionTypes.SIGN_IN,\n payload: { userIndex, password },\n});\n\nexport const logOut = () => ({\n type: AuthActionTypes.LOGOUT_USER,\n});\n","import { GrWindows } from 'react-icons/gr';\n\nimport BootLogo from '../../components/BootLogo/BootLogo';\nimport './BootScreen.scss';\n\nconst BootScreen = () => (\n
\n
\n \n
\n
\n \n
\n
\n);\n\nexport default BootScreen;\n","import React, { useEffect, useState } from 'react';\nimport { Link } from 'react-router-dom';\nimport { AiOutlineUser } from 'react-icons/ai';\n\nimport BootLogo from '../../components/BootLogo/BootLogo';\nimport Button from '../../components/Button/Button';\nimport Strings from '../../config/strings';\nimport './ChildView.scss';\n\nconst ChildView = (props) => {\n const { childClass, onFieldUpdate, value, signInOpt, onSubmit, details, validity } = props;\n const [opacity, updateOpacity] = useState(0);\n useEffect(() => updateOpacity(1), []);\n useEffect(() => updateOpacity(1), [childClass]);\n\n return (\n
\n {childClass === 'AccountSettingUpView' ? (\n <>\n \n
\n

Just a moment...

\n
\n \n ) : (\n <>\n
\n

{details.title}

\n

{details.subtitle}

\n
\n\n
\n
\n \n
\n
\n onFieldUpdate(e.target.value)}\n />\n
\n
\n\n
\n
\n {signInOpt && (\n {Strings.LOGIN_LINK_SIGNUP_VIEW}\n )}\n
\n
\n updateOpacity(0) || setTimeout(onSubmit, 250)}\n text=\"Next\"\n />\n
\n
\n \n )}\n
\n );\n};\n\nexport default ChildView;\n","import { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { VscArrowLeft } from 'react-icons/vsc';\n\nimport { getUsername, User } from '../../redux/auth/auth.user';\nimport { selectUsers } from '../../redux/auth/auth.selectors';\nimport { createNewAccount } from '../../redux/auth/auth.actions';\nimport Strings from '../../config/strings';\nimport ChildView from './ChildView';\nimport './NewAccount.scss';\n\nconst details = [\n {\n title: Strings.SIGNUP_NAME_VIEW_TITLE,\n subtitle: Strings.SIGNUP_NAME_VIEW_SUBTITLE,\n type: 'text',\n placeholder: 'User name',\n },\n {\n title: Strings.SIGNUP_PASSWORD_VIEW_TITLE,\n subtitle: Strings.SIGNUP_PASSWORD_VIEW_SUBTITLE,\n type: 'password',\n placeholder: 'Password',\n },\n];\n\nconst NewAccount = () => {\n const users = useSelector(selectUsers);\n const dispatch = useDispatch();\n const history = useHistory();\n\n const [profileName, updateName] = useState('');\n const [profilePassword, updatePassword] = useState('');\n const [currentView, updateCurrentView] = useState(true);\n\n useEffect(() => {\n if (currentView === -1) {\n dispatch(createNewAccount(User(profileName, profileName, profilePassword)));\n setTimeout(() => history.push('/switchuser?cover=false'), 2000);\n }\n }, [currentView]);\n\n return (\n
\n
\n
\n {!currentView && updateCurrentView(!currentView)} />}\n
\n
Account
\n
\n
\n\n
\n {currentView === -1 ? (\n \n ) : (\n 0 : false}\n onSubmit={() => (currentView ? updateCurrentView(!currentView) : updateCurrentView(-1))}\n details={details[+!currentView]}\n validity={(val) =>\n currentView ? users.filter((user) => getUsername(user) === val).length !== 0 : false\n }\n />\n )}\n
\n
\n );\n};\n\nexport default NewAccount;\n","import { useEffect, useState } from 'react';\nimport { subscribeClock, unsubscribeClock, formatDateTime } from '../../app.util';\nimport './Clock.scss';\n\nconst dateOptions = { weekday: 'short', month: 'long', day: 'numeric' };\nconst timeOptions = { hour12: true, hour: 'numeric', minute: '2-digit', hour12suffix: true };\n\nconst Clock = () => {\n const [currentDateTime, updateCurrentDateTime] = useState(new Date());\n const dateTimeFormat = formatDateTime(currentDateTime, dateOptions, timeOptions);\n\n // set time interval for current time clock\n useEffect(() => {\n const clockRef = subscribeClock(updateCurrentDateTime);\n return () => unsubscribeClock(clockRef);\n }, []);\n\n return (\n
\n
{dateTimeFormat.time}
\n
{dateTimeFormat.date}
\n
\n );\n};\n\nexport default Clock;\n","import { GrWindows } from 'react-icons/gr';\nimport { VscClose, VscRss, VscSearch, VscTriangleUp, VscUnmute } from 'react-icons/vsc';\nimport { FaBatteryFull, FaCommentAlt } from 'react-icons/fa';\n\nimport Clock from '../Clock/Clock';\nimport Strings from '../../config/strings';\nimport './TaskBar.scss';\n\nconst TaskBarAppInstances = ({\n apps,\n programs,\n data,\n onIconClick,\n onInstanceClick,\n onCloseInstance,\n}) => {\n const Instances = ({ instances }) =>\n instances.map((instance) => (\n onInstanceClick(instance)}\n >\n {data[instance].title}\n onCloseInstance(instance)}\n >\n \n \n
\n ));\n\n const App = ({ app, onClick }) => {\n const instances = programs[app.id] || [];\n return (\n (instances.length ? true : onClick(app))}\n >\n {app.icon()}\n
\n \n
\n
\n );\n };\n\n return apps.map((app) => );\n};\n\nconst TaskBar = ({\n apps,\n programs,\n programsData,\n onIconClick,\n onMindowsClick,\n onInstanceClick,\n onCloseInstance,\n}) => (\n
\n
\n
\n \n
\n
\n
\n \n {Strings.TASKBAR_SEARCH_PLACEHOLDER}\n
\n \n
\n\n \n
\n\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n);\n\nexport default TaskBar;\n","import { FcBearish, FcMusic, FcCamera, FcGoogle, FcNews, FcPicture, FcSteam } from 'react-icons/fc';\nimport {\n FaDropbox,\n FaAmazon,\n FaChrome,\n FaFacebookF,\n FaFirefoxBrowser,\n FaGithub,\n FaMicrosoft,\n FaSkype,\n FaXbox,\n} from 'react-icons/fa';\nimport { MdMovieCreation } from 'react-icons/md';\nimport { WiDaySunny } from 'react-icons/wi';\nimport { SiMicrosoftword } from 'react-icons/si';\n\nconst Promotions = [\n {\n icon: FcGoogle,\n text: 'Google Search',\n action: 'https://www.google.com/',\n },\n {\n icon: FaAmazon,\n text: 'Amazon',\n action: 'https://www.amazon.com/',\n },\n {\n icon: FaChrome,\n text: 'Google Chrome',\n action: 'https://www.google.com/intl/en_uk/chrome/',\n },\n {\n icon: FaDropbox,\n text: 'Dropbox',\n action: 'https://www.dropbox.com/',\n },\n {\n icon: FaFacebookF,\n text: 'Facebook',\n action: 'https://www.facebook.com/',\n },\n {\n icon: FaFirefoxBrowser,\n text: 'Firefox',\n action: 'https://www.mozilla.org/en-US/firefox/new/',\n },\n {\n icon: FaGithub,\n text: 'Mindows',\n action: 'https://www.github.com/piyush078/mindows',\n },\n {\n icon: FaSkype,\n text: 'Skype',\n action: 'https://www.skype.com/en/',\n },\n {\n icon: WiDaySunny,\n text: 'Weather',\n action: 'https://weather.com/',\n },\n {\n icon: SiMicrosoftword,\n text: 'Word',\n action: 'https://www.microsoft.com/en-in/microsoft-365/business',\n },\n {\n icon: FcSteam,\n text: 'Steam',\n action: 'https://store.steampowered.com/',\n },\n {\n icon: FcCamera,\n text: 'Camera',\n },\n {\n icon: FaMicrosoft,\n text: 'Windows 11',\n action: 'https://www.microsoft.com/en-in/windows/windows-11',\n },\n {\n icon: FcNews,\n text: 'News',\n action: 'https://www.bing.com/news',\n },\n {\n icon: MdMovieCreation,\n text: 'Movies',\n },\n {\n icon: FaXbox,\n text: 'Xbox',\n },\n {\n icon: FcMusic,\n text: 'Music',\n },\n {\n icon: FcBearish,\n text: 'Money',\n },\n {\n icon: FcPicture,\n text: 'Gallery',\n action: 'https://onedrive.live.com/about/en-us/signin/',\n },\n];\n\nexport default Promotions;\n","import { VscDebug } from 'react-icons/vsc';\nimport './Calculator.scss';\n\nconst Calculator = () => (\n
\n
\n \n

Oops! Mindows must be broken!!

\n
\n
\n
\n

There seems to be no Calculator installed on the system.

\n

But wait... you can always add it and send a pull request.

\n
\n
\n
\n);\n\nexport default Calculator;\n","import { VscDebug } from 'react-icons/vsc';\nimport './Calender.scss';\n\nconst Calender = () => (\n
\n
\n \n

Oops! Mindows must be broken!!

\n
\n
\n
\n

There seems to be no Calender installed on the system.

\n

But wait... you can always add it and send a pull request.

\n
\n
\n
\n);\n\nexport default Calender;\n","import { GrCopy, GrDocument } from 'react-icons/gr';\nimport { MdContentPaste } from 'react-icons/md';\nimport { IoIosCut } from 'react-icons/io';\nimport { ImCross } from 'react-icons/im';\nimport { BiRename } from 'react-icons/bi';\nimport { BsGrid, BsGridFill } from 'react-icons/bs';\nimport { GoPencil } from 'react-icons/go';\n\nimport './Ribbon.scss';\n\nconst CategoryClipboard = ({\n disabledPaste,\n onCopyItems,\n onCutItems,\n onPasteItems,\n disabledCopyOrCut,\n}) => (\n
\n
\n \n
\n \n
\n
Copy
\n
\n \n
\n \n
\n
Paste
\n
\n \n
\n \n
\n
Cut
\n \n \n
Clipboard
\n \n);\n\nconst CategoryOrganize = ({ onDeleteItem, onRenameItem, disabled }) => (\n
\n
\n
\n
\n \n
\n
Delete
\n
\n
\n
\n \n
\n
Rename
\n
\n
\n
Organize
\n
\n);\n\nconst CategoryNew = ({ onCreate }) => (\n
\n
\n
onCreate(true)}>\n
\n \"Folder\"\n
\n
New Folder
\n
\n
onCreate(false)}>\n
\n \n
\n
New Item
\n
\n
\n
New
\n
\n);\n\nconst CategoryOpen = ({ disabled }) => (\n
\n
\n
\n
\n \n
\n
Open
\n
\n
\n
Open
\n
\n);\n\nconst CategorySelect = ({ onSelectAll, onSelectNone }) => (\n
\n
\n
\n
\n \n
\n
Select all
\n
\n
\n
\n \n
\n
Select none
\n
\n
\n
Select
\n
\n);\n\nconst Ribbon = ({\n disableAll,\n selectedItems,\n isClipboardEmpty,\n onCreateItem,\n onRenameItem,\n onDeleteItem,\n onSelectAll,\n onSelectNone,\n onCopyItems,\n onCutItems,\n onPasteItems,\n}) => {\n const isFileSelected =\n selectedItems.length === 0 || (selectedItems.length === 1 && selectedItems[0] === '_new');\n\n return (\n
\n \n\n \n\n onCreateItem(isDir)} />\n\n \n\n \n
\n );\n};\n\nexport default Ribbon;\n","import React, { useEffect, useState } from 'react';\nimport { MdDesktopWindows } from 'react-icons/md';\nimport { FiHardDrive } from 'react-icons/fi';\nimport Strings from '../../../../config/strings';\nimport './Sidebar.scss';\n\nconst Sidebar = React.memo(\n ({ selectedItem, rootDirectoryData, onSelectItem, onGoToDirectory }) => {\n const [directoryData, updateDirectoryData] = useState([]);\n useEffect(() => updateDirectoryData(rootDirectoryData), []);\n\n const SideNavbarItem = ({ item }) => (\n onGoToDirectory(item.id) || onSelectItem(item.id)}\n >\n \n \n \n {item.name}\n \n );\n\n return (\n
\n onGoToDirectory('_root') || onSelectItem('_root')}\n >\n \n \n \n {Strings.PC_FILESYSTEM_ROOT_NAME}\n
\n
\n {directoryData.map((item) => (\n \n ))}\n
\n \n );\n },\n (prevProps, nextProps) => prevProps.selectedItem === nextProps.selectedItem\n);\n\nexport default Sidebar;\n","const Icon = ({ isDir }) =>\n isDir ? (\n \"Folder\"\n ) : (\n \"Folder\"\n );\n\nexport default Icon;\n","import { useEffect, useRef, useState } from 'react';\nimport { FiHardDrive } from 'react-icons/fi';\nimport Icon from '../Icon/Icon';\n\nconst defaultName = (isDir) => (isDir === 'dir' ? 'New Folder' : 'New Document');\nconst newItem = (itemType) => ({\n id: '_new',\n name: defaultName(itemType === 'dir'),\n isDir: itemType === 'dir',\n});\nconst formatDirectoryItems = (items, newItemMode) =>\n items.concat(newItemMode ? newItem(newItemMode) : []);\n\nconst Directory = ({\n items,\n clipboard,\n selectedItems,\n isRootDirectory,\n onDoubleClick,\n createMode,\n renameMode,\n onCreateItem,\n onRenameItem,\n onSelectItem,\n onCancelRename,\n onOpenDocument,\n}) => {\n const [newName, updateNewName] = useState('');\n const inputRef = useRef(null);\n const onDoneRename = (toName) => (createMode ? onCreateItem(toName) : onRenameItem(toName));\n const dirItems = formatDirectoryItems(items, createMode);\n\n // on change of createMode or renameMode, update input field with name\n useEffect(() => {\n if (createMode) {\n updateNewName(defaultName(createMode));\n inputRef.current.focus();\n } else if (renameMode) {\n updateNewName(dirItems.filter((item) => item.id === selectedItems[0])[0].name);\n inputRef.current.focus();\n }\n }, [createMode, renameMode]);\n\n return (\n
\n {dirItems.map((item) => {\n const toBeRenamed = item.id === '_new' || (selectedItems.includes(item.id) && renameMode);\n const className =\n `Explorer-fs-item ` +\n `${selectedItems.includes(item.id) ? ' Explorer-fs-item-selected' : ''} ` +\n `${clipboard.includes(item.id) ? ' Explorer-fs-item-cut' : ''}`;\n\n return (\n onSelectItem(item.id)}\n onDoubleClick={() =>\n item.isDir\n ? onDoubleClick(item.id)\n : onOpenDocument(item.id, item.name, item.extension)\n }\n >\n {isRootDirectory ? : }\n \n {item.name}\n {item.extension ? `.${item.extension}` : ''}\n \n\n {toBeRenamed && (\n updateNewName(e.target.value)}\n onKeyUp={(e) => e.key === 'Enter' && onDoneRename(newName)}\n onBlur={() => onCancelRename(item.name)}\n />\n )}\n
\n );\n })}\n \n );\n};\n\nexport default Directory;\n","const accountState = (state) => state.account;\n\nexport const selectAccountSettings = (store) => accountState(store).settings;\n\nexport const selectTaskBarApps = (store) => accountState(store).taskbarApps;\n\nexport const selectDirectoryItems = (id) => (store) => {\n const fs = accountState(store).filesystem;\n return fs[id] ? fs[id].children.map((child) => fs[child].node) : [];\n};\n\nexport const selectDefaultApps = (store) => accountState(store).defaultApps;\n","const AccountActionTypes = {\n LOAD_ACCOUNT: 'LOAD_ACCOUNT',\n GET_ACCOUNT_SETTINGS: 'GET_ACCOUNT_SETTINGS',\n GET_FILESYSTEM: 'GET_FILESYSTEM',\n SAVE_ACCOUNT: 'SAVE_ACCOUNT',\n\n CREATE_NEW_DIR_ITEM: 'CREATE_NEW_DIR_ITEM',\n RENAME_DIR_ITEM: 'RENAME_DIR_ITEM',\n DELETE_DIR_ITEM: 'DELETE_DIR_ITEM',\n COPY_DIR_ITEM: 'COPY_DIR_ITEM',\n MOVE_DIR_ITEM: 'MOVE_DIR_ITEM',\n};\n\nexport default AccountActionTypes;\n","import { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport Ribbon from './components/Ribbon/Ribbon';\nimport Sidebar from './components/Sidebar/Sidebar';\nimport Directory from './components/Directory/Directory';\nimport { selectDirectoryItems } from '../../redux/account/account.selectors';\nimport './Explorer.scss';\nimport {\n copyDirectoryItems,\n createNewDirectoryItem,\n moveDirectoryItems,\n renameDirectoryItems,\n unlinkDirectoryItems,\n} from '../../redux/account/account.actions';\n\nconst rootDir = '_root';\n\nconst Explorer = (props) => {\n const { onOpenDocument } = props;\n const dispatch = useDispatch();\n const [currentDir, updateCurrentDir] = useState(rootDir);\n const directoryData = useSelector(selectDirectoryItems(currentDir)) || [];\n const [selectedItems, updateSelected] = useState([]);\n const [chosenCategory, chooseCategory] = useState(rootDir);\n const [createMode, updateCreateMode] = useState(false);\n const [renameMode, updateRenameMode] = useState(false);\n const [clipboard, updateClipboard] = useState({ mode: -1, items: [] });\n\n const onGoToDirectory = (id) =>\n updateCurrentDir(id) || updateSelected([]) || (rootDir === currentDir && chooseCategory(id));\n const onSelectItem = (id) => updateSelected([id]);\n const onCancelRename = () => (renameMode ? updateRenameMode(false) : updateCreateMode(false));\n\n // delete selected items\n const onDeleteItem = () => {\n dispatch(unlinkDirectoryItems(currentDir, selectedItems));\n updateSelected([]);\n };\n\n // dispatch to create a new file/folder\n const onCreateItem = (name) => {\n const isDir = createMode === 'dir';\n updateCreateMode(false);\n dispatch(createNewDirectoryItem({ name, isDir, path: currentDir }));\n };\n\n // dispatch to rename a file/folder\n const onRenameItem = (newName) => {\n updateRenameMode(false);\n dispatch(renameDirectoryItems(selectedItems, newName));\n };\n\n // on paste the copy/cut items\n const onPasteItems = () => {\n if (clipboard.mode === 0) {\n dispatch(moveDirectoryItems(currentDir, clipboard.items));\n updateClipboard({ mode: -1, items: [] });\n } else {\n dispatch(copyDirectoryItems(currentDir, clipboard.items));\n }\n };\n\n return (\n
\n \n updateCreateMode(isDir ? 'dir' : 'file') || updateSelected(['_new'])\n }\n onRenameItem={() => updateRenameMode(true)}\n onDeleteItem={onDeleteItem}\n onSelectAll={() => updateSelected(directoryData.map((item) => item.id))}\n onSelectNone={() => updateSelected([])}\n onCopyItems={() => updateClipboard({ mode: 1, items: [...selectedItems] })}\n onCutItems={() => updateClipboard({ mode: 0, items: [...selectedItems] })}\n onPasteItems={onPasteItems}\n />\n\n
\n chooseCategory(id)}\n />\n\n
\n \n
\n
\n
\n );\n};\n\nexport default Explorer;\n","import AccountActionTypes from './account.types';\n\nexport const loadAccount = (activeUser) => ({\n type: AccountActionTypes.LOAD_ACCOUNT,\n payload: activeUser,\n});\n\nexport const saveAccount = (activeUser) => ({\n type: AccountActionTypes.SAVE_ACCOUNT,\n payload: activeUser,\n});\n\nexport const getAccountSettings = () => ({\n type: AccountActionTypes.GET_ACCOUNT_SETTINGS,\n});\n\nexport const getAccountFileSystem = () => ({\n type: AccountActionTypes.GET_FILESYSTEM,\n});\n\nexport const createNewDirectoryItem = (item) => ({\n type: AccountActionTypes.CREATE_NEW_DIR_ITEM,\n payload: item,\n});\n\nexport const renameDirectoryItems = (ids, newName) => ({\n type: AccountActionTypes.RENAME_DIR_ITEM,\n payload: { items: ids, newName },\n});\n\nexport const unlinkDirectoryItems = (path, ids) => ({\n type: AccountActionTypes.DELETE_DIR_ITEM,\n payload: { ids, path },\n});\n\nexport const copyDirectoryItems = (toPath, itemIds) => ({\n type: AccountActionTypes.COPY_DIR_ITEM,\n payload: { toPath, ids: itemIds },\n});\n\nexport const moveDirectoryItems = (toPath, itemIds) => ({\n type: AccountActionTypes.MOVE_DIR_ITEM,\n payload: { toPath, ids: itemIds },\n});\n","import React, { useEffect, useRef, useState } from 'react';\nimport './Notepad.scss';\n\nconst STORENAME = 'documents';\nconst formMenubarItems = (onSave, onExit, wordWrap, onWordWrap) => [\n {\n title: 'File',\n submenu: [\n { title: 'Save', action: onSave },\n { title: 'Exit', action: onExit },\n ],\n },\n {\n title: 'View',\n submenu: [{ title: 'Word Wrap', toggleValue: wordWrap, action: onWordWrap }],\n },\n];\n\nconst Notepad = (props) => {\n const { docId, onTerminate, updateProgramData, getProgramData, createMenubar } = props;\n const textRef = useRef(null);\n const [text, updateText] = useState('');\n const onExit = onTerminate;\n const [wordWrap, onToggleWordWrap] = useState(false);\n const style = { whiteSpace: wordWrap ? 'nowrap' : 'pre-wrap' };\n\n const onSave = () => {\n const data = {\n id: docId,\n content: textRef.current.value,\n };\n updateProgramData(STORENAME, data);\n };\n\n // get text from storage\n useEffect(() => {\n if (docId) {\n getProgramData(STORENAME, docId, (res) => updateText(res.data?.content || ''));\n }\n }, []);\n\n const menu = createMenubar(\n formMenubarItems(onSave, onExit, wordWrap, () => onToggleWordWrap(!wordWrap))\n );\n\n return (\n
\n {menu}\n
\n \n
\n
\n );\n};\n\nexport default Notepad;\n","import { VscDebug } from 'react-icons/vsc';\nimport './Settings.scss';\n\nconst Settings = () => (\n
\n
\n \n

Oops! Mindows must be broken!!

\n
\n
\n
\n

There seems to be no Settings installed on the system.

\n

But wait... you can always add it and send a pull request.

\n
\n
\n
\n);\n\nexport default Settings;\n","import { FcCalculator, FcCalendar, FcDocument, FcFolder } from 'react-icons/fc';\nimport { VscSettingsGear } from 'react-icons/vsc';\nimport Calculator from '../softwares/Calculator/Calculator';\nimport Calender from '../softwares/Calender/Calender';\nimport Explorer from '../softwares/Explorer/Explorer';\nimport Notepad from '../softwares/Notepad/Notepad';\nimport Settings from '../softwares/Settings/Settings';\n\nconst InstalledApps = {\n calculator: {\n id: 'calculator',\n name: 'Calculator',\n icon: FcCalculator,\n component: Calculator,\n config: {\n initWindowWidth: '320px',\n initWindowHeight: '480px',\n },\n },\n calendar: {\n id: 'calendar',\n name: 'Calendar',\n icon: FcCalendar,\n component: Calender,\n },\n fsexplorer: {\n id: 'fsexplorer',\n name: 'File Explorer',\n icon: FcFolder,\n component: Explorer,\n perms: {\n OPEN_DOCUMENT: true,\n },\n },\n notepad: {\n id: 'notepad',\n name: 'Notepad',\n icon: FcDocument,\n component: Notepad,\n config: {\n initTitle: 'Untitled - Notepad',\n initWindowWidth: '480px',\n initWindowHeight: '480px',\n },\n },\n settings: {\n id: 'settings',\n name: 'Settings',\n icon: VscSettingsGear,\n component: Settings,\n },\n};\n\nexport default InstalledApps;\n","import React, { useState } from 'react';\nimport { VscMenu, VscFolder, VscSettingsGear } from 'react-icons/vsc';\nimport { AiOutlineUser } from 'react-icons/ai';\nimport { RiShutDownLine } from 'react-icons/ri';\n\nimport Promotions from './Promotions';\nimport InstalledApps from '../../config/apps';\nimport { getName } from '../../redux/auth/auth.user';\nimport './StartMenu.scss';\n\nconst StartMenuDrawer = React.memo(\n ({ user, onLogout, onLaunchApp }) => {\n const [drawer, toggleDrawer] = useState(false);\n\n return (\n
\n
\n
\n
toggleDrawer(!drawer)}>\n \n
\n
START
\n
\n
\n
\n
\n
\n \n
\n
{getName(user)}
\n
\n onLaunchApp(InstalledApps.fsexplorer)}\n >\n
\n \n
\n
File Explorer
\n
\n onLaunchApp(InstalledApps.settings)}\n >\n
\n \n
\n
Settings
\n
\n
\n
\n \n
\n
Log Off
\n
\n \n \n );\n },\n () => true\n);\n\nconst StartMenuApps = React.memo(\n ({ onClick }) => {\n const Apps = ({ apps, category }) =>\n apps.map((app, i) => (\n onClick(app)}\n className=\"StartMenu-apps-category-list-item\"\n >\n
{app.icon()}
\n
{app.name}
\n \n ));\n\n const Category = ({ category }) => (\n
\n
{category.category}
\n
\n \n
\n
\n );\n\n const smApps = [];\n const apps = Object.keys(InstalledApps).map((id) => InstalledApps[id]);\n [...new Set(apps.map((app) => app.name[0].toLowerCase()))].sort().forEach((c) => {\n smApps.push({\n category: c.toUpperCase(),\n apps: apps.filter((app) => app.name[0].toLowerCase() === c),\n });\n });\n\n return (\n
\n {smApps.map((cat) => (\n \n ))}\n
\n );\n },\n () => true\n);\n\nconst StartMenuPromotions = React.memo(\n () => {\n let promotions = [...Promotions];\n for (let i = 0; i < promotions.length - 1; i += 1) {\n const j = Math.floor(Math.random * promotions.length) % promotions.length;\n [promotions[i], promotions[j]] = [promotions[j], promotions[i]];\n }\n promotions = promotions.filter((pr) => pr);\n const colors = ['#3e3c91', 'green', 'orange', 'red'];\n\n const Blocks = ({ list }) =>\n list.map((item, i) => (\n \n \n
{item.icon()}
\n
{item.text}
\n \n
\n ));\n\n return (\n
\n
\n
Life at a glance
\n
\n \n
\n
\n
\n
Explore
\n
\n \n
\n
\n
\n );\n },\n (prevProps, nextProps) => nextProps.hide\n);\n\nconst StartMenu = React.memo(\n ({ user, hide, onLogout, onProgramClick }) => (\n
\n \n \n \n
\n ),\n (prevProps, nextProps) => prevProps.hide === nextProps.hide\n);\n\nexport default StartMenu;\n","import React from 'react';\nimport {\n VscChromeClose,\n VscChromeMinimize,\n VscChromeMaximize,\n VscChromeRestore,\n} from 'react-icons/vsc';\nimport './TitleBar.scss';\n\nconst TitleBar = React.memo(\n ({ app, programId, title, isMaximized, onMinimize, onMaximize, onRestore, onTerminate }) => (\n
\n
\n
{app.icon()}
\n
{title}
\n
\n
\n
\n \n
\n
\n {isMaximized ? : }\n
\n
\n \n
\n
\n
\n ),\n (prevProps, nextProps) => prevProps.isMaximized === nextProps.isMaximized\n);\n\nexport default TitleBar;\n","import { VscCheck } from 'react-icons/vsc';\nimport './MenuBar.scss';\n\nconst MenuBar = ({ items }) => {\n const MenubarSubmenu = ({ submenu }) =>\n submenu.map((subitem, j) => (\n \n \n {subitem.toggleValue && }\n \n {subitem.title}\n \n ));\n\n const MenubarItem = ({ item }) => (\n \n {item.title}\n {item.submenu && (\n e.currentTarget.parentNode.blur()}\n >\n \n \n )}\n \n );\n\n return (\n
\n {items.map((item, i) => (\n \n ))}\n
\n );\n};\n\nexport default MenuBar;\n","const checkBrowserSupport = () =>\n window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n\nexport const indexedDB = checkBrowserSupport();\n\nexport const connectIDB = (DB_NAME, DB_VERSION, STORENAME) => {\n const onupgradeneeded = (db) => {\n console.log('IndexedDb OnUpgradeNeeded');\n if (!db.objectStoreNames.contains(STORENAME)) {\n db.createObjectStore(STORENAME);\n }\n };\n\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(DB_NAME, DB_VERSION);\n request.onupgradeneeded = () => onupgradeneeded(request.result);\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n request.onblocked = () => reject(new Error('IndexedDb Blocked'));\n });\n};\n","import { indexedDB, connectIDB } from './disk.connect';\n\nconst dispatchIDB = async ({ DB_NAME, DB_VERSION }, STORENAME, action) =>\n new Promise((resolve, reject) => {\n let db = null;\n try {\n if (!indexedDB) {\n reject(new Error('IndexedDb not supported in the browser'));\n } else if (!DB_NAME || !DB_VERSION || !STORENAME || !action) {\n reject(new Error('Required values not provided. Cannot perform the action.'));\n } else {\n connectIDB(DB_NAME, DB_VERSION, STORENAME)\n .then((connectRes) => {\n db = connectRes;\n action(db, STORENAME)\n .then((data) => resolve(data))\n .catch((error) => reject(error));\n })\n .catch((error) => reject(error));\n }\n } catch (err) {\n reject(err);\n } finally {\n if (db) db.close();\n }\n });\n\nexport default dispatchIDB;\n","const writeInIDB = (document) => (db, STORENAME) =>\n new Promise((resolve, reject) => {\n if (!document.id) {\n reject(new Error('No unique key provided to store the document'));\n }\n\n const transaction = db.transaction(STORENAME, 'readwrite');\n const store = transaction.objectStore(STORENAME);\n const query = store.put(document, document.id);\n\n query.onsuccess = () => resolve(query.result);\n query.onerror = () => reject(query.error);\n });\n\nexport default writeInIDB;\n","const searchInIDB = (key) => (db, STORENAME) =>\n new Promise((resolve, reject) => {\n if (!key) {\n reject(new Error('No key provided to search the store'));\n }\n\n const transaction = db.transaction(STORENAME, 'readonly');\n const store = transaction.objectStore(STORENAME);\n const query = store.get(key);\n\n query.onsuccess = () => resolve(query.result);\n query.onerror = () => reject(query.error);\n });\n\nexport default searchInIDB;\n","import dispatchIDB from './disk.dispatch';\nimport writeInIDB from './disk.write';\nimport searchInIDB from './disk.read';\nimport deleteFromIDB from './disk.delete';\n\nexport const updateProgramData = (DISK) => (STORENAME, data, callback) => {\n dispatchIDB(DISK, STORENAME, writeInIDB(data))\n .then((res) => callback && callback({ data: res }))\n .catch((err) => callback && callback({ error: err }));\n};\n\nexport const getProgramData = (DISK) => (STORENAME, key, callback) => {\n dispatchIDB(DISK, STORENAME, searchInIDB(key))\n .then((res) => callback && callback({ data: res }))\n .catch((err) => callback && callback({ error: err }));\n};\n\nexport const deleteProgramData = (DISK) => (STORENAME, key, callback) => {\n dispatchIDB(DISK, STORENAME, deleteFromIDB(key))\n .then((res) => callback && callback({ data: res }))\n .catch((err) => callback && callback({ error: err }));\n};\n\nexport const initDisk = (DB_NAME, DB_VERSION) => ({\n DB_NAME,\n DB_VERSION,\n});\n","import React, { useEffect, useRef, useState } from 'react';\nimport Draggable from 'react-draggable';\n\nimport TitleBar from '../../components/TitleBar/TitleBar';\nimport MenuBar from '../../components/MenuBar/MenuBar';\nimport { getProgramData, initDisk, updateProgramData } from '../../disk';\nimport './Program.scss';\n\nconst { innerWidth: windowWidth, innerHeight: windowHeight } = window;\nconst leftOffset = (w) => (windowWidth - w) * 0.25;\nconst topOffset = (h) => (windowHeight - h) * 0.5;\nconst defaultHeight = '480px';\nconst defaultWidth = '640px';\n\nconst ProgramComponent = React.memo(\n ({ component, ...props }) => component(props),\n () => true\n);\n\nconst Program = React.memo(\n (props) => {\n const { app } = props;\n const initWindowHeight = app.config?.initWindowHeight || defaultHeight;\n const initWindowWidth = app.config?.initWindowWidth || defaultWidth;\n const programRef = useRef(null);\n const [disk] = useState(initDisk(app.id, app.version || 1));\n\n // bring the program to foreground on componentDidMount\n useEffect(() => props.onClickWindow(app.pId), []);\n\n const [dimensions, updateDimensions] = useState({\n delta: {\n x: leftOffset(initWindowWidth),\n y: topOffset(initWindowHeight),\n reset: false,\n },\n defaultStyle: { height: initWindowHeight, width: initWindowWidth },\n style: { height: initWindowHeight, width: initWindowWidth },\n isMaximized: false,\n });\n\n const handleDrag = (e, ui) => {\n const { x, y } = dimensions.delta;\n if (!dimensions.isMaximized)\n updateDimensions({ ...dimensions, delta: { x: x + ui.deltaX, y: y + ui.deltaY } });\n };\n\n const maximize = () => {\n updateDimensions({\n ...dimensions,\n style: { top: '0', bottom: '48px', left: '0', right: '0' },\n delta: { ...dimensions.delta, reset: true },\n isMaximized: true,\n });\n };\n\n const restore = () => {\n updateDimensions({\n ...dimensions,\n style: { ...dimensions.defaultStyle },\n delta: { ...dimensions.delta, reset: false },\n isMaximized: false,\n });\n };\n\n return (\n \n props.onClickWindow(app.pId)}\n >\n props.onMinimize(app.pId)}\n onMaximize={maximize}\n onRestore={restore}\n onTerminate={() => props.onTerminate(app.pId)}\n />\n\n
\n true}\n createMenubar={(items) => }\n updateProgramData={updateProgramData(disk)}\n getProgramData={getProgramData(disk)}\n onTerminate={() => props.onTerminate(app.id)}\n />\n
\n \n \n );\n },\n (prevProps, nextProps) =>\n // in case minimized state is same, it should be in the background or foreground in prev and new state\n prevProps.isMinimized === nextProps.isMinimized &&\n ((prevProps.zIndex === 'auto' && nextProps.zIndex === 'auto') ||\n (prevProps.zIndex !== 'auto' && nextProps.zIndex !== 'auto'))\n);\n\nexport default Program;\n","const MemoryActionTypes = {\n START_NEW_PROGRAM: 'START_NEW_PROGRAM',\n TERMINATE_PROGRAM: 'TERMINATE_PROGRAM',\n};\n\nexport default MemoryActionTypes;\n","import MemoryActionTypes from './memory.types';\n\nexport const startNewProgram = (app, metadata) => ({\n type: MemoryActionTypes.START_NEW_PROGRAM,\n payload: { app, metadata },\n});\n\nexport const terminateProgram = (pId) => ({\n type: MemoryActionTypes.TERMINATE_PROGRAM,\n payload: pId,\n});\n","const memoryState = (store) => store.memory;\n\nexport const selectAppsInstances = (store) => memoryState(store).appsInstances;\n\nexport const selectProgramsData = (store) => memoryState(store).programsData;\n","import BootLogo from '../BootLogo/BootLogo';\nimport './Loading.scss';\n\nconst Loading = (props) => {\n const { message = 'Loading...', background = '#1f1e49' } = props;\n const style = { background };\n\n return (\n
\n \n
\n

{message}

\n
\n
\n );\n};\n\nexport default Loading;\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport TaskBar from '../../components/TaskBar/TaskBar';\nimport StartMenu from '../../components/StartMenu/StartMenu';\nimport Program from '../Program/Program';\nimport InstalledApps from '../../config/apps';\nimport {\n selectAccountSettings,\n selectDefaultApps,\n selectTaskBarApps,\n} from '../../redux/account/account.selectors';\nimport { loadAccount, saveAccount } from '../../redux/account/account.actions';\nimport { startNewProgram, terminateProgram } from '../../redux/memory/memory.action';\nimport { selectAppsInstances, selectProgramsData } from '../../redux/memory/memory.selectors';\nimport './Desktop.scss';\nimport Loading from '../../components/Loading/Loading';\nimport { logOut } from '../../redux/auth/auth.actions';\n\nconst Desktop = ({ activeUser }) => {\n const accountSettings = useSelector(selectAccountSettings);\n const dispatch = useDispatch();\n const [startMenu, toggleStartMenu] = useState(false);\n const [opacity, updateOpacity] = useState(1);\n const [logoutMode, startLogoutMode] = useState(false);\n const style = {\n opacity,\n backgroundImage: `url(${process.env.PUBLIC_URL}\"/images/${accountSettings.background}\")`,\n };\n\n useEffect(() => dispatch(loadAccount(activeUser)), []);\n useEffect(() => {\n if (!opacity) {\n setTimeout(() => {\n startLogoutMode(true);\n updateOpacity(1);\n setTimeout(() => {\n dispatch(saveAccount(activeUser));\n dispatch(logOut());\n }, 4000);\n }, 400);\n }\n }, [opacity]);\n\n // programsData: { pId_1: programData, pId_2: programData }\n // appsInstances: { calculator: [pId_1, .., pId_k], calendar: [pId_1,..., pId_m] }\n // runningPrograms: [pId_1, pId_2, ...]\n const programsData = useSelector(selectProgramsData);\n const appsInstances = useSelector(selectAppsInstances);\n const runningPrograms = Object.keys(programsData);\n const [windows, updateWindows] = useState({ maxZIndex: 100, pId: null });\n const [minimized, updateMinimized] = useState({});\n\n // taskbarApps: [calculator, calendar, ...]\n const taskbarApps = useSelector(selectTaskBarApps);\n const taskbarAndOpenedApps = taskbarApps.concat(Object.keys(appsInstances));\n const taskbarAppsData = [...new Set(taskbarAndOpenedApps)].map((appId) => InstalledApps[appId]);\n\n // defaultApps\n const defaultApps = useSelector(selectDefaultApps);\n\n // bring activated window/program to the foreground\n const onClickProgramWindow = (pId) =>\n updateWindows(({ maxZIndex }) => ({ maxZIndex: maxZIndex + 1, pId }));\n\n // add a program to minimized state\n const onToggleMinimize = (pId, to) => {\n const newMinimized = {};\n newMinimized[pId] = to;\n updateMinimized(Object.assign(minimized, newMinimized));\n };\n\n // when program is selected from taskbar\n const onSelectFromTaskBar = (pId) => {\n onClickProgramWindow(pId);\n onToggleMinimize(pId, false);\n };\n\n // start a new program\n const onStartNewProgram = (app) => {\n toggleStartMenu(false);\n dispatch(startNewProgram(app));\n };\n\n // open a document from file explorer\n const onOpenDocument = (docId, name, ext = '*') => {\n const app = InstalledApps[defaultApps[ext] || defaultApps['*']];\n dispatch(startNewProgram(app, { docId, title: name }));\n };\n\n return (\n
\n {logoutMode ? (\n \n ) : (\n <>\n {runningPrograms.map((pId) => (\n onToggleMinimize(_pId, true)}\n onTerminate={() => dispatch(terminateProgram(pId))}\n onClickWindow={onClickProgramWindow}\n onOpenDocument={onOpenDocument}\n />\n ))}\n\n updateOpacity(0)}\n onProgramClick={(app) => onStartNewProgram(app)}\n />\n\n onSelectFromTaskBar(pId)}\n onIconClick={(app) => onStartNewProgram(app)}\n onMindowsClick={() => toggleStartMenu(!startMenu)}\n onCloseInstance={(pId) => dispatch(terminateProgram(pId))}\n />\n \n )}\n
\n );\n};\n\nexport default Desktop;\n","import { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Switch, Route, useLocation, Redirect } from 'react-router-dom';\n\nimport { selectActiveUser, selectUsers } from './redux/auth/auth.selectors';\nimport { checkUserSession } from './redux/auth/auth.actions';\nimport SwitchUser from './pages/SwitchUser/SwitchUser';\nimport BootScreen from './pages/BootScreen/BootScreen';\nimport NewAccount from './pages/NewAccount/NewAccount';\nimport './App.scss';\nimport Desktop from './pages/Desktop/Desktop';\n\nconst App = () => {\n const users = useSelector(selectUsers);\n const activeUser = useSelector(selectActiveUser);\n const dispatch = useDispatch();\n const location = useLocation();\n useEffect(() => setTimeout(() => dispatch(checkUserSession()), 2000), [dispatch]);\n\n return (\n
\n \n \n users ? (\n users.length ? (\n \n ) : (\n \n )\n ) : (\n \n )\n }\n />\n\n \n users ? (\n users.length ? (\n \n ) : (\n \n )\n ) : (\n \n )\n }\n />\n\n (users ? : )} />\n\n (activeUser ? : )}\n />\n \n
\n );\n};\n\nexport default App;\n","import { PublicUser } from './auth.user';\n\nconst storageKeys = {\n PERSISTENT_USERS: 'PERSISTENT_USERS',\n};\n\nexport const checkForStoredUser = () => {\n const users = localStorage.getItem(storageKeys.PERSISTENT_USERS);\n return users ? JSON.parse(users) : [];\n};\n\nexport const saveNewUser = (user) => {\n const users = checkForStoredUser().concat(user);\n localStorage.setItem(storageKeys.PERSISTENT_USERS, JSON.stringify(users));\n return users;\n};\n\nexport const safeguardUser = (users) => (users ? users.map((user) => PublicUser(user)) : users);\n\nexport const signInUser = (userIndex, password) => {\n const users = checkForStoredUser();\n return users[userIndex].password === password;\n};\n","import AuthActionTypes from './auth.types';\nimport { checkForStoredUser, saveNewUser, safeguardUser, signInUser } from './auth.utils';\nimport Strings from '../../config/strings';\n\nconst initialState = {\n users: null,\n activeUser: null,\n success: false,\n error: null,\n};\n\nconst AuthReducer = (state = initialState, action) => {\n switch (action.type) {\n case AuthActionTypes.CHECK_USER_SESSION: {\n const users = state.users || checkForStoredUser();\n return { ...state, users: safeguardUser(users) };\n }\n\n case AuthActionTypes.CREATE_NEW_ACCOUNT: {\n const newUsers = saveNewUser(action.payload);\n return { ...state, users: safeguardUser(newUsers) };\n }\n\n case AuthActionTypes.SIGN_IN: {\n const { userIndex, password } = action.payload;\n const signInSuccess = signInUser(userIndex, password);\n if (signInSuccess) {\n return { ...state, activeUser: state.users[userIndex], success: true };\n }\n return { ...state, error: { text: Strings.INCORRECT_PASSWORD, __id: new Date().getTime() } };\n }\n\n case AuthActionTypes.LOGOUT_USER: {\n return { ...state, success: null, error: null, activeUser: null };\n }\n\n default:\n return { ...state, users: safeguardUser(state.users) };\n }\n};\n\nexport default AuthReducer;\n","const Wallpapers = {\n list: [\n {\n name: '9fa80fd805562a6bc817f01f48b8b93e.jpg',\n description: 'Wharariki Beach Cave, Archway Islands, South Island of New Zealand',\n },\n {\n name: 'd2luMTBfb2ZmaWNpYWxfd2FsbHBhcGVy.jpg',\n description: 'Windows 10 Official wallpaper',\n },\n ],\n defaultWallpaper: 1,\n};\n\nexport default Wallpapers;\n","import Wallpapers from '../../config/wallpapers';\n\nconst storageKeys = {\n LOCK_SCREEN_BACKGROUND: 'LOCK_SCREEN_BACKGROUND',\n LOGIN_SCREEN_BACKGROUND: 'LOGIN_SCREEN_BACKGROUND',\n};\n\nexport const getLockScreenBackground = () => {\n const name = localStorage.getItem(storageKeys.LOCK_SCREEN_BACKGROUND);\n return name in Wallpapers.list ? name : Wallpapers.list[0].name;\n};\n\nexport const getLoginScreenBackground = () => {\n const name = localStorage.getItem(storageKeys.LOGIN_SCREEN_BACKGROUND);\n return name in Wallpapers.list ? name : Wallpapers.list[Wallpapers.defaultWallpaper].name;\n};\n","import BootActionTypes from './boot.types';\nimport { getLockScreenBackground, getLoginScreenBackground } from './boot.utils';\n\nconst initialState = {\n backgrounds: { lock: null, login: null },\n};\n\nconst BootReducer = (state = initialState, action) => {\n switch (action.type) {\n case BootActionTypes.GET_BACKGROUNDS: {\n const lockBackground = getLockScreenBackground();\n const loginBackground = getLoginScreenBackground();\n return { ...state, backgrounds: { lock: lockBackground, login: loginBackground } };\n }\n\n default:\n return state;\n }\n};\n\nexport default BootReducer;\n","import { getUsername } from '../auth/auth.user';\n\nconst storageKeys = {\n ACCOUNT_DATA: (username) => `ACCOUNT_DATA__${username}`,\n};\n\nexport const getAccountFromStorage = (user) => {\n const username = getUsername(user);\n const data = localStorage.getItem(storageKeys.ACCOUNT_DATA(username));\n return data ? JSON.parse(data) : {};\n};\n\nexport const saveAccountInStorage = (user, state) => {\n const username = getUsername(user);\n localStorage.setItem(storageKeys.ACCOUNT_DATA(username), JSON.stringify(state));\n};\n\nexport const linkNodes = (fs, parentNode, childNodes) => {\n const newFs = { ...fs };\n const newChildren = [...parentNode.children].concat(childNodes.map((node) => node.node.id));\n newFs[parentNode.node.id] = { ...parentNode, children: newChildren };\n childNodes.forEach((node) => {\n newFs[node.node.id] = node;\n });\n return newFs;\n};\n\nexport const renameNodes = (fs, ids, newName) => {\n const newFs = { ...fs };\n ids.forEach((id) => {\n newFs[id].node.name = newName;\n });\n return newFs;\n};\n\nexport const unlinkNodes = (fs, parentNode, ids) => {\n const newFs = { ...fs };\n newFs[parentNode.node.id] = {\n ...parentNode,\n children: parentNode.children.filter((cId) => !ids.includes(cId)),\n };\n ids.forEach((id) => delete newFs[id]);\n return newFs;\n};\n\nexport const copyNodes = (fs, childNodes, toParentNode) => linkNodes(fs, toParentNode, childNodes);\n\nexport const moveNodes = (fs, childNodes, fromParentNode, toParentNode) => {\n if (fromParentNode.node.id === toParentNode.node.id) {\n return { ...fs };\n }\n return linkNodes(\n unlinkNodes(\n fs,\n fromParentNode,\n childNodes.map((node) => node.node.id)\n ),\n toParentNode,\n childNodes\n );\n};\n","const generateRandomId = (len) => {\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';\n return [...Array(len)]\n .map(() => characters[Math.floor(Math.random() * characters.length)])\n .join('');\n};\n\nconst Directory = (name, modifiedTime, createdTime) => ({\n id: generateRandomId(5),\n name,\n modifiedTime: modifiedTime || new Date().getTime(),\n createdTime: createdTime || new Date().getTime(),\n isDir: true,\n});\n\nconst File = (name, modifiedTime, createdTime) => ({\n id: generateRandomId(5),\n name: name.indexOf('.') !== -1 ? name.substr(0, name.lastIndexOf('.')) : name,\n extension: name.indexOf('.') !== -1 ? name.substring(name.lastIndexOf('.') + 1) : '',\n modifiedTime: modifiedTime || new Date().getTime(),\n createdTime: createdTime || new Date().getTime(),\n isDir: false,\n});\n\nconst Node = (name, isDir, parent, children = [], mTime = null, id = null) => {\n const time = mTime || new Date().getTime();\n const node = isDir ? Directory(name, time, time) : File(name, time, time);\n node.id = id || node.id;\n return {\n node,\n parent,\n children: [...children],\n };\n};\n\nexport default Node;\n","import AccountActionTypes from './account.types';\nimport {\n renameNodes,\n getAccountFromStorage,\n unlinkNodes,\n linkNodes,\n copyNodes,\n moveNodes,\n saveAccountInStorage,\n} from './account.utils';\nimport Node from './account.fs';\nimport Wallpapers from '../../config/wallpapers';\n\nconst initialState = {\n settings: {\n background: Wallpapers.list[Wallpapers.defaultWallpaper].name,\n },\n taskbarApps: ['fsexplorer', 'notepad'],\n filesystem: {\n _root: Node('', true, null, ['C:', 'D:'], null, '_root'),\n 'C:': Node('Local Drive (C:)', true, '_root', [], null, 'C:'),\n 'D:': Node('Local Drive (D:)', true, '_root', [], null, 'D:'),\n },\n defaultApps: {\n '*': 'notepad',\n },\n};\n\nconst AccountReducer = (state = initialState, action) => {\n switch (action.type) {\n case AccountActionTypes.LOAD_ACCOUNT: {\n const loadedAccount = getAccountFromStorage(action.payload);\n return { ...state, ...loadedAccount };\n }\n\n case AccountActionTypes.SAVE_ACCOUNT: {\n const activeAccount = action.payload;\n saveAccountInStorage(activeAccount, state);\n return state;\n }\n\n case AccountActionTypes.CREATE_NEW_DIR_ITEM: {\n const item = action.payload;\n const newNode = Node(item.name, item.isDir, item.path);\n const newFs = linkNodes(state.filesystem, state.filesystem[item.path], [newNode]);\n return { ...state, filesystem: newFs };\n }\n\n case AccountActionTypes.RENAME_DIR_ITEM: {\n const itemsId = action.payload.items;\n const { newName } = action.payload;\n const newFs = renameNodes(state.filesystem, itemsId, newName);\n return { ...state, filesystem: newFs };\n }\n\n case AccountActionTypes.DELETE_DIR_ITEM: {\n const parent = action.payload.path;\n const idsToDelete = action.payload.ids;\n const newFs = unlinkNodes(state.filesystem, state.filesystem[parent], idsToDelete);\n return { ...state, filesystem: newFs };\n }\n\n case AccountActionTypes.COPY_DIR_ITEM: {\n const { toPath } = action.payload;\n const idsToCopy = action.payload.ids;\n const nodesToCopy = idsToCopy.map((id) => state.filesystem[id]);\n const newFs = copyNodes(\n state.filesystem,\n nodesToCopy.map((node) => Node(node.node.name, node.node.isDir, toPath)),\n state.filesystem[toPath]\n );\n return { ...state, filesystem: newFs };\n }\n\n case AccountActionTypes.MOVE_DIR_ITEM: {\n const { toPath } = action.payload;\n const idsToMove = action.payload.ids;\n const fromPath = state.filesystem[idsToMove[0]].parent;\n const nodesToMove = idsToMove.map((id) => state.filesystem[id]);\n const newFs = moveNodes(\n state.filesystem,\n nodesToMove,\n state.filesystem[fromPath],\n state.filesystem[toPath]\n );\n return { ...state, filesystem: newFs };\n }\n\n default:\n return state;\n }\n};\n\nexport default AccountReducer;\n","export const loadProgram = (program, metadata = {}) => {\n const title = metadata.title || program.config?.initTitle || program.name;\n const uniqueId = new Date().getTime().toString() + Math.floor(Math.random() * 100).toString();\n\n return { pId: uniqueId, ...metadata, title, ...program };\n};\n\nexport const updateProgramsData = (data, newProgram) => {\n const newData = { ...data };\n newData[newProgram.pId] = newProgram;\n return newData;\n};\n\nexport const updateAppsInstances = (data, newProgram) => {\n const newInstances = { ...data };\n const key = newProgram.id;\n if (!(key in data)) newInstances[key] = [];\n newInstances[key] = [...newInstances[key], newProgram.pId];\n return newInstances;\n};\n\nexport const removeProgram = (data, pId) => {\n const newData = { ...data };\n delete newData[pId];\n return newData;\n};\n\nexport const removeAppInstance = (data, id, pId) => {\n const newData = {};\n newData[id] = data[id].filter((instanceId) => instanceId !== pId);\n return Object.assign(data, newData);\n};\n","import MemoryActionTypes from './memory.types';\nimport {\n loadProgram,\n removeAppInstance,\n removeProgram,\n updateAppsInstances,\n updateProgramsData,\n} from './memory.utils';\n\nconst initialState = {\n appsInstances: {},\n programsData: {},\n};\n\nconst MemoryReducer = (state = initialState, action) => {\n switch (action.type) {\n case MemoryActionTypes.START_NEW_PROGRAM: {\n const { app, metadata } = action.payload;\n const newProgram = loadProgram(app, metadata);\n return {\n ...state,\n programsData: updateProgramsData(state.programsData, newProgram),\n appsInstances: updateAppsInstances(state.appsInstances, newProgram),\n };\n }\n\n case MemoryActionTypes.TERMINATE_PROGRAM: {\n const pId = action.payload;\n const { id } = state.programsData[pId];\n return {\n ...state,\n programsData: removeProgram(state.programsData, pId),\n appsInstances: removeAppInstance(state.appsInstances, id, pId),\n };\n }\n\n default:\n return state;\n }\n};\n\nexport default MemoryReducer;\n","import { combineReducers } from 'redux';\n\nimport AuthReducer from './auth';\nimport BootReducer from './boot';\nimport AccountReducer from './account';\nimport MemoryReducer from './memory';\n\nconst reducer = combineReducers({\n auth: AuthReducer,\n boot: BootReducer,\n account: AccountReducer,\n memory: MemoryReducer,\n});\n\nexport default reducer;\n","import { createStore } from 'redux';\nimport reducer from './reducer';\n\nconst store = createStore(reducer);\nexport default store;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport { Provider } from 'react-redux';\n\nimport './index.scss';\nimport App from './App';\nimport store from './redux/store';\n// import reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n \n \n \n \n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\n// reportWebVitals();\n"],"sourceRoot":""}