{"version":3,"sources":["components/layout/transceive.svg","reportWebVitals.js","context/vocya_api/VocyaApiContext.js","components/pages/About.js","components/layout/Alert.js","components/utils/Checkbox.js","components/prompt/ConfirmBox.js","components/prompt/RouteLeavingGuard.js","components/benkyou/Benkyou.js","components/layout/idle.svg","components/layout/Navbar.js","components/utils/CacheBuster.js","components/utils/Search.js","components/layout/spinner.gif","components/layout/Spinner.js","components/courses/Course.js","components/courses/CourseItem.js","components/courses/Courses.js","components/chapters/Chapter.js","components/chapters/ChapterItem.js","components/chapters/Chapters.js","components/words/Word.js","components/words/WordItem.js","components/words/Words.js","App.js","context/types.js","context/vocya_api/vocyaApiReducer.js","components/utils/VocyaAPI.js","context/vocya_api/VocyaApiState.js","index.js"],"names":["_path","reportWebVitals","onPerfEntry","Function","then","_ref","getCLS","getFID","getFCP","getLCP","getTTFB","VocyaApiContext","createContext","About","vocyaApiContext","useContext","dbUpdateStatus","_useState","useState","_useState2","_slicedToArray","version","setVersion","useEffect","fetch","cache","response","json","meta","buildDateTime","_jsxs","Fragment","children","_jsx","packageJson","className","onClick","actionUpdateDatabase","Alert","alert","concat","type","msg","Checkbox","text","defaultValue","update","isChecked","setChecked","_useState3","_uniqueId","id","value","checked","onChange","e","preventDefault","htmlFor","ConfirmBox","visible","onCancel","onConfirm","_Fragment","style","margin","RouteLeavingGuard","navigate","when","shouldBlockNavigation","content","modalVisible","updateModalVisible","_useState4","lastLocation","updateLastLocation","_useState5","_useState6","confirmedNavigation","updateConfirmedNavigation","unloadCallback","event","returnValue","window","addEventListener","removeEventListener","closeModal","cb","pathname","Prompt","message","nextLocation","location","Benkyou","history","useHistory","words","allWordsToBenkyou","wordsLeftToBenkyou","setWordsLeftToBenkyou","japaneseToDutch","setJapaneseToDutch","showHiragana","setShowHiragana","_useState7","_useState8","randomizeWords","setRandomizeWords","_useState9","_useState10","showAnswersImmediately","setShowAnswersImmediately","_useState11","_useState12","questionWord","setQuestionWord","_useState13","_useState14","answerWords","setAnswerWords","_useState15","_useState16","showAnswers","setShowAnswers","_useState17","_useState18","started","setStarted","_useState19","_useState20","correct","setCorrect","_useState21","_useState22","done","setDone","_useState23","_useState24","mistakes","setMistakes","length","newQuestionIndex","Math","floor","random","questionWordId","newAnswerWords","potentialAnswers","filter","word","index","push","splice","map","sort","a","b","getAnswerCards","forEach","card","marginBottom","onAnswerClicked","nihongo","hiragana","dutch","wordId","path","_excluded","_extends","Object","assign","bind","target","i","arguments","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgTransceive","svgRef","title","titleId","props","xmlns","viewBox","ref","d","ForwardRef","SvgIdle","Navbar","innerWidth","useHamburgerMenu","setUseHamburgerMenu","menuOpen","setMenuOpen","handleResizeWindow","links","to","name","React","Menu","isOpen","onStateChange","link","Link","paddingLeft","display","loading","Transceive","fill","width","height","marginTop","Idle","CacheBuster","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","semverGreaterThan","versionA","versionB","versionsA","split","versionsB","Number","shift","isNaN","state","cacheBusterLoading","isLatestVersion","currentVersion","latestVersion","refreshCacheAndReload","console","log","caches","_asyncToGenerator","_regeneratorRuntime","mark","_callee","names","wrap","_context","prev","next","Promise","all","delete","stop","_x","reload","_createClass","_this2","setState","_this$state","Component","Search","itemName","items","searchItems","showAllItems","showAllItemsArgs","setAlert","setText","liveSearch","setLiveSearch","searchWordOnly","setSearchWordOnly","exactMatch","setExactMatch","useLocation","searchBox","checkQueryString","search","query","queryString","parse","setIsSearching","_searchItems","setSearchText","stringify","_objectSpread","focus","onSubmit","placeholder","input","onKeyDown","code","isSearching","Spinner","src","spinner","alt","Course","match","course","getCourse","params","singleItemStyle","courseStyle","co_id","abbreviation","JSON","CourseItem","_ref$course","flexFlow","flex","Courses","courses","Chapter","chapter","ch_id","getCourseChapter","getChapter","chapterStyle","course_name","ChapterItem","_ref$chapter","Chapters","chapters","Word","wo_id","getCourseChapterWord","getCourseWord","getChapterWord","getWord","wordStyle","fontSize","WordItem","_ref$word","romaji","Words","allWords","setAllWords","shownWords","setShownWords","maxElements","setMaxElements","slice","handleScroll","scrollingElement","scrollHeight","scrollTop","clientHeight","passive","App","filteredCourses","setFilteredCourses","filteredChapters","setFilteredChapters","filteredWords","setFilteredWords","performSearch","searchWordOnlyKeys","filteredItems","textLowerSplit","setLoading","toLowerCase","item","every","splittedText","entries","some","_ref2","_ref3","includes","splittedValue","replace","abrupt","_x2","_x3","_x4","_x5","searchCourse","_ref5","_callee2","_ref4","filtered","_context2","sent","_x6","searchChapter","_ref7","_callee3","_ref6","_context3","_x7","searchWord","_ref9","_callee4","_ref8","_context4","_x8","timeoutId","setTimeoutId","showAlert","clearTimeout","setTimeout","Router","flexDirection","_ref10","color","marginLeft","marginRight","padding","Switch","Route","exact","render","getWords","getCourses","component","getCourseChapters","getCourseChapterWords","getCourseWords","getChapters","getChapterWords","GET_COURSES","GET_COURSE","GET_COURSE_CHAPTERS","GET_COURSE_CHAPTER","GET_COURSE_CHAPTER_WORDS","GET_COURSE_CHAPTER_WORD","GET_COURSE_WORDS","GET_COURSE_WORD","GET_CHAPTERS","GET_CHAPTER","GET_CHAPTER_WORDS","GET_CHAPTER_WORD","GET_WORDS","GET_WORD","SET_LOADING","SET_IS_SEARCHING","ACTION_UPDATE_DATABASE","vocyaApiReducer","action","payload","API_ENDPOINT","apiCourses","axios","get","apiCourse","apiCourseChapters","apiCourseChapter","apiCourseChapterWords","_callee5","_context5","apiCourseChapterWord","_callee6","_context6","_x9","apiCourseWords","_callee7","_context7","_x10","apiCourseWord","_callee8","_context8","_x11","_x12","apiChapters","_callee9","_context9","apiChapter","_callee10","_context10","_x13","apiChapterWords","_ref11","_callee11","_context11","_x14","apiChapterWord","_ref12","_callee12","_context12","_x15","_x16","apiWords","_ref13","_callee13","_context13","apiWord","_ref14","_callee14","_context14","_x17","apiUpdateDatabase","_ref15","_callee15","_context15","VocyaApiState","_useReducer","useReducer","_useReducer2","dispatch","res","setupPageForNewContent","data","_ref16","_ref18","_ref17","_ref20","_ref19","_ref22","_ref21","_ref23","_ref25","_ref24","_ref26","updateResult","result","Provider","ReactDOM","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.4ae2da34.chunk.js","sourcesContent":["var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgTransceive(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 5c3.453 0 5.891 2.797 5.567 6.78 1.745-.046 4.433.751 4.433 3.72 0 1.93-1.57 3.5-3.5 3.5h-13c-1.93 0-3.5-1.57-3.5-3.5 0-2.797 2.479-3.833 4.433-3.72-.167-4.218 2.208-6.78 5.567-6.78zm0-2c-4.006 0-7.267 3.141-7.479 7.092-2.57.463-4.521 2.706-4.521 5.408 0 3.037 2.463 5.5 5.5 5.5h13c3.037 0 5.5-2.463 5.5-5.5 0-2.702-1.951-4.945-4.521-5.408-.212-3.951-3.473-7.092-7.479-7.092zm-4 10h3v-4h2v4h3l-4 4-4-4z\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTransceive);\nexport default __webpack_public_path__ + \"static/media/transceive.5b5b11e5.svg\";\nexport { ForwardRef as ReactComponent };","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import { createContext } from \"react\";\n\nconst VocyaApiContext = createContext();\n\nexport default VocyaApiContext;\n","import React, { Fragment, useContext, useEffect, useState } from \"react\";\nimport packageJson from \"../../../package.json\";\nimport VocyaApiContext from \"../../context/vocya_api/VocyaApiContext\";\n\nconst About = () => {\n const vocyaApiContext = useContext(VocyaApiContext);\n\n const { dbUpdateStatus } = vocyaApiContext;\n\n const [version, setVersion] = useState(\"loading build date/time...\");\n\n useEffect(() => {\n fetch(\"/meta.json\", { cache: \"no-store\" })\n .then((response) => response.json())\n .then((meta) => {\n setVersion(meta.buildDateTime);\n });\n }, []);\n\n return (\n \n

About this website

\n

\n The vocabulary of the Kotatsu Japanese E-Mastery courses is available\n using this site. It's possible to find the words of a specific course,\n chapter or by searching all words. Also the hiragana and katakana tables\n are available. このウエブサイトの言葉を勉強します (studying the words on\n this website) can be done by browsing for words to study, and clicking\n on '勉強(study)'.\n

\n

\n

\n Front-end dashboard application for the vocya API and the vocjem data.\n

\n

\n Version: {packageJson.version}\n

\n

\n Build date/time (local timezone): {version}\n

\n

\n
\n vocyaApiContext.actionUpdateDatabase()}\n >\n Update database\n
\n Database update result: {dbUpdateStatus}\n \n
\n );\n};\n\nexport default About;\n","import React from \"react\";\n\nconst Alert = ({ alert }) => {\n return (\n alert !== null && (\n
\n {alert.msg}\n
\n )\n );\n};\n\nexport default Alert;\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport _uniqueId from \"lodash/uniqueId\";\n\nconst Checkbox = ({ text, defaultValue, update }) => {\n const [isChecked, setChecked] = useState(defaultValue);\n const [id] = useState(_uniqueId(\"prefix-\"));\n\n return (\n {\n if (update) update(!isChecked);\n setChecked(!isChecked);\n }}\n >\n e.preventDefault()}\n onClick={(e) => e.preventDefault()}\n id={id}\n >\n e.preventDefault()}\n onClick={(e) => e.preventDefault()}\n >\n {text}\n \n \n );\n};\n\nCheckbox.propTypes = {\n text: PropTypes.string.isRequired,\n defaultValue: PropTypes.bool.isRequired,\n};\nexport default Checkbox;\n","import React from \"react\";\n\nconst ConfirmBox = ({ visible, onCancel, onConfirm, children }) => {\n const confirm = () => {\n onCancel();\n onConfirm();\n };\n\n return (\n <>\n {visible && (\n
\n
\n
{children}
\n
\n
onCancel()}>\n No\n
\n
\n Yes\n
\n
\n
\n
\n )}\n \n );\n};\n\nexport default ConfirmBox;\n","import React, { useEffect, useState } from \"react\";\nimport { Prompt } from \"react-router-dom\";\nimport ConfirmBox from \"./ConfirmBox\";\n\nexport const RouteLeavingGuard = ({\n navigate,\n when,\n shouldBlockNavigation,\n content,\n}) => {\n const [modalVisible, updateModalVisible] = useState(false);\n const [lastLocation, updateLastLocation] = useState();\n const [confirmedNavigation, updateConfirmedNavigation] = useState(false);\n\n // use the beforeunload event to hook into page refreshes and closes\n useEffect(() => {\n const unloadCallback = (event) => {\n event.preventDefault();\n return (event.returnValue = \"\");\n };\n window.addEventListener(\"beforeunload\", unloadCallback);\n return () => window.removeEventListener(\"beforeunload\", unloadCallback);\n }, []);\n\n const showModal = (location) => {\n updateModalVisible(true);\n updateLastLocation(location);\n };\n\n const closeModal = (cb) => {\n updateModalVisible(false);\n if (cb) {\n cb();\n }\n };\n\n const handleBlockedNavigation = (nextLocation) => {\n if (!confirmedNavigation && shouldBlockNavigation(nextLocation)) {\n showModal(nextLocation);\n return false;\n }\n return true;\n };\n\n const handleConfirmNavigationClick = () => {\n closeModal(() => {\n if (lastLocation) {\n updateConfirmedNavigation(true);\n }\n });\n };\n\n useEffect(() => {\n if (confirmedNavigation) {\n navigate(lastLocation.pathname);\n updateConfirmedNavigation(false);\n }\n }, [confirmedNavigation]); // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n <>\n \n \n \n );\n};\n\nexport default RouteLeavingGuard;\n","import React, { Fragment, useContext, useEffect, useState } from \"react\";\n\nimport VocyaApiContext from \"../../context/vocya_api/VocyaApiContext\";\nimport Checkbox from \"../utils/Checkbox\";\nimport RouteLeavingGuard from \"../prompt/RouteLeavingGuard\";\nimport { useHistory } from \"react-router-dom\";\n\nconst Benkyou = () => {\n const vocyaApiContext = useContext(VocyaApiContext);\n const history = useHistory();\n const { words } = vocyaApiContext;\n\n const allWordsToBenkyou = words;\n const [wordsLeftToBenkyou, setWordsLeftToBenkyou] = useState(words);\n\n const [japaneseToDutch, setJapaneseToDutch] = useState(true);\n const [showHiragana, setShowHiragana] = useState(true);\n const [randomizeWords, setRandomizeWords] = useState(false);\n const [showAnswersImmediately, setShowAnswersImmediately] = useState(true);\n\n const [questionWord, setQuestionWord] = useState({});\n const [answerWords, setAnswerWords] = useState([]);\n const [showAnswers, setShowAnswers] = useState(false);\n const [started, setStarted] = useState(false);\n const [correct, setCorrect] = useState(false);\n const [done, setDone] = useState(false);\n const [mistakes, setMistakes] = useState(0);\n\n const generateNewQuestion = () => {\n // remove the question from the words left to benkyou\n // this triggers the generation of a new question and answers\n setWordsLeftToBenkyou(wordsLeftToBenkyou.filter((e) => e !== questionWord));\n setCorrect(false);\n };\n\n // const generateQuestionAndAnswers = () => {\n useEffect(() => {\n if (!started) return;\n\n if (wordsLeftToBenkyou.length === 0) {\n setDone(true);\n return;\n }\n\n // generate the index of the next question (in wordsLeftToBenkyou)\n let newQuestionIndex = 0;\n if (randomizeWords)\n newQuestionIndex = Math.floor(Math.random() * wordsLeftToBenkyou.length);\n const questionWordId = wordsLeftToBenkyou[newQuestionIndex].id;\n setQuestionWord(wordsLeftToBenkyou[newQuestionIndex]);\n\n // generate the indexes of the answers (in allWordsToBenkyou)\n let newAnswerWords = [wordsLeftToBenkyou[newQuestionIndex]];\n // create a list of potential answers, where the question is filtered out\n let potentialAnswers = allWordsToBenkyou.filter(\n (word) => word.id !== questionWordId\n );\n while (newAnswerWords.length < 4) {\n // bla\n const index = Math.floor(Math.random() * potentialAnswers.length);\n newAnswerWords.push(potentialAnswers[index]);\n potentialAnswers.splice(index, 1); // removes index from the array\n }\n setAnswerWords(\n newAnswerWords\n .map((value) => ({ value, sort: Math.random() }))\n .sort((a, b) => a.sort - b.sort)\n .map(({ value }) => value)\n );\n }, [allWordsToBenkyou, wordsLeftToBenkyou, randomizeWords, started]);\n\n const getQuestionCard = () => {\n return (\n
\n {japaneseToDutch &&

日本語:{questionWord.nihongo}

}\n {japaneseToDutch && showHiragana && (\n

ひらがな:{questionWord.hiragana}

\n )}\n {!japaneseToDutch &&

Dutch: {questionWord.dutch}

}\n
\n );\n };\n\n const getAnswerCards = () => {\n let words = [];\n answerWords.forEach((word) => {\n words.push({\n id: word.id,\n card: (\n onAnswerClicked(word.id)}\n >\n {!japaneseToDutch &&

日本語:{word.nihongo}

}\n {!japaneseToDutch && showHiragana && (\n

ひらがな:{word.hiragana}

\n )}\n {japaneseToDutch &&

Dutch: {word.dutch}

}\n \n ),\n });\n });\n return words;\n };\n\n const onAnswerClicked = (wordId) => {\n if (wordId === questionWord.id) {\n setShowAnswers(false);\n setCorrect(true);\n } else {\n setMistakes(mistakes + 1);\n setAnswerWords(answerWords.filter((word) => word.id !== wordId));\n }\n };\n\n const renderNoWordsToBenkyou = () => {\n return (\n
\n No words currently selected to benkyou shimasu (study).\n
\n Search for words on one of the courses/chapters/words pages, or show the\n words of a single course/chapter you want to study; and go back to this\n benkyou page.\n
\n );\n };\n\n const renderStarted = () => {\n return (\n \n history.push(path)}\n shouldBlockNavigation={() => started}\n content=\"Are you sure you want to leave 勉強(study)?\"\n />\n
\n Words left to benkyou shimasu: [ {wordsLeftToBenkyou.length} /{\" \"}\n {allWordsToBenkyou.length} ]\n
\n {done ? (\n
\n Studied {allWordsToBenkyou.length} words while making {mistakes}{\" \"}\n mistakes.\n
\n ) : correct ? (\n generateNewQuestion()}\n >\n Correct! Next question\n \n ) : (\n \n
Question:
\n
{getQuestionCard()}
\n
Answers:
\n {showAnswersImmediately || showAnswers ? (\n
\n {getAnswerCards().map((word) => (\n
{word.card}
\n ))}\n
\n ) : (\n setShowAnswers(true)}\n >\n Show answers\n \n )}\n
\n )}\n
\n );\n };\n\n const renderStart = () => {\n return (\n \n
Words to benkyou shimasu: {wordsLeftToBenkyou.length}
\n setStarted(true)}\n >\n Start benkyou shimasu!\n \n
\n );\n };\n\n return (\n \n
\n setJapaneseToDutch(!japaneseToDutch)}\n >\n {japaneseToDutch ? \"Japanese -> Dutch\" : \"Dutch -> Japanese\"}\n
\n setShowHiragana(checked)}\n defaultValue={showHiragana}\n />\n setShowAnswersImmediately(checked)}\n defaultValue={showAnswersImmediately}\n />\n setRandomizeWords(checked)}\n defaultValue={randomizeWords}\n />\n \n {allWordsToBenkyou.length === 0\n ? renderNoWordsToBenkyou()\n : started\n ? renderStarted()\n : renderStart()}\n
\n );\n};\n\nexport default Benkyou;\n","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgIdle(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 5c3.453 0 5.891 2.797 5.567 6.78 1.745-.046 4.433.751 4.433 3.72 0 1.93-1.57 3.5-3.5 3.5h-13c-1.93 0-3.5-1.57-3.5-3.5 0-2.797 2.479-3.833 4.433-3.72-.167-4.218 2.208-6.78 5.567-6.78zm0-2c-4.006 0-7.267 3.141-7.479 7.092-2.57.463-4.521 2.706-4.521 5.408 0 3.037 2.463 5.5 5.5 5.5h13c3.037 0 5.5-2.463 5.5-5.5 0-2.702-1.951-4.945-4.521-5.408-.212-3.951-3.473-7.092-7.479-7.092z\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIdle);\nexport default __webpack_public_path__ + \"static/media/idle.b7f3e2d3.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useContext, useEffect, useState } from \"react\";\nimport Menu from \"react-burger-menu/lib/menus/slide\";\nimport { Link } from \"react-router-dom\";\n\nimport VocyaApiContext from \"../../context/vocya_api/VocyaApiContext\";\nimport { ReactComponent as Transceive } from \"./transceive.svg\";\nimport { ReactComponent as Idle } from \"./idle.svg\";\nimport \"./Sidebar.css\";\n\nconst Navbar = () => {\n const vocyaApiContext = useContext(VocyaApiContext);\n\n // switch to hamburger menu if the screen width is less than hamburgerMenuMaxWidth\n const hamburgerMenuMaxWidth = 1600;\n const [useHamburgerMenu, setUseHamburgerMenu] = useState(\n window.innerWidth < hamburgerMenuMaxWidth\n );\n const [menuOpen, setMenuOpen] = useState(false);\n\n // monitor resize events and store the window width on a resize\n useEffect(() => {\n const handleResizeWindow = () =>\n setUseHamburgerMenu(window.innerWidth < hamburgerMenuMaxWidth);\n window.addEventListener(\"resize\", handleResizeWindow);\n return () => window.removeEventListener(\"resize\", handleResizeWindow);\n }, []);\n\n const links = [\n { to: \"/\", name: \"Home\" },\n { to: \"/benkyou\", name: \"勉強(study)\" },\n { to: \"/courses\", name: \"Courses\" },\n { to: \"/chapters\", name: \"Chapters\" },\n { to: \"/course/jem1/words\", name: \"JEM1 words\" },\n { to: \"/course/jem-old-1/words\", name: \"JEM1 (old) words\" },\n { to: \"/course/jem2/words\", name: \"JEM2 words\" },\n { to: \"/course/jem3/words\", name: \"JEM3 words\" },\n { to: \"/course/jem4/words\", name: \"JEM4 words\" },\n { to: \"/table/hiragana\", name: \"Hiragana table\" },\n { to: \"/table/katakana\", name: \"Katakana table\" },\n { to: \"/about\", name: \"About\" },\n ];\n\n return (\n \n {/* render a hamburger menu, as the width is smaller than some value */}\n {useHamburgerMenu && (\n setMenuOpen(isOpen)}\n >\n {links.map((link, index) => (\n setMenuOpen(false)}>\n {link.name}\n \n ))}\n \n )}\n \n \n );\n};\n\nexport default Navbar;\n","import { Component } from \"react\";\nimport packageJson from \"../../../package.json\";\n\nexport default class CacheBuster extends Component {\n constructor(props) {\n super(props);\n this.state = {\n cacheBusterLoading: true,\n isLatestVersion: false,\n currentVersion: \"0\",\n latestVersion: \"0\",\n refreshCacheAndReload: () => {\n console.log(\"Clearing cache and hard reloading...\");\n if (caches) {\n caches\n .keys()\n .then(async function (names) {\n await Promise.all(names.map((name) => caches.delete(name)));\n })\n .then(\n // delete browser cache and hard reload\n // forceReload=true is deprecated,\n // so do a 'normal' reload since we've already cleared the cache\n window.location.reload()\n );\n }\n },\n };\n }\n\n semverGreaterThan = (versionA, versionB) => {\n const versionsA = versionA.split(/\\./g);\n const versionsB = versionB.split(/\\./g);\n while (versionsA.length || versionsB.length) {\n const a = Number(versionsA.shift());\n const b = Number(versionsB.shift());\n if (a === b) continue;\n return a > b || isNaN(b);\n }\n return false;\n };\n\n componentDidMount() {\n fetch(\"/meta.json\", { cache: \"no-store\" })\n .then((response) => response.json())\n .then((meta) => {\n const latestVersion = meta.version;\n const currentVersion = packageJson.version;\n\n const shouldForceRefresh = this.semverGreaterThan(\n latestVersion,\n currentVersion\n );\n if (shouldForceRefresh) {\n console.log(\n `new version: ${latestVersion} available, should force refresh`\n );\n this.setState({\n cacheBusterLoading: false,\n isLatestVersion: false,\n latestVersion: latestVersion,\n currentVersion: currentVersion,\n });\n } else {\n console.log(\n `running latest version: ${latestVersion}, no refresh needed`\n );\n this.setState({ cacheBusterLoading: false, isLatestVersion: true });\n }\n });\n }\n\n render() {\n const {\n cacheBusterLoading,\n isLatestVersion,\n currentVersion,\n latestVersion,\n refreshCacheAndReload,\n } = this.state;\n return this.props.children({\n cacheBusterLoading,\n isLatestVersion,\n currentVersion,\n latestVersion,\n refreshCacheAndReload,\n });\n }\n}\n\n/*\n * source:\n * https://dev.to/flexdinesh/cache-busting-a-react-app-22lk\n */\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { useLocation, useHistory } from \"react-router-dom\";\nimport PropTypes from \"prop-types\";\nimport queryString from \"query-string\";\n\nimport VocyaApiContext from \"../../context/vocya_api/VocyaApiContext\";\nimport Checkbox from \"./Checkbox\";\n\nconst Search = ({\n itemName,\n items,\n searchItems,\n showAllItems,\n showAllItemsArgs,\n setAlert,\n}) => {\n const vocyaApiContext = useContext(VocyaApiContext);\n\n const [text, setText] = useState(\"\");\n const [liveSearch, setLiveSearch] = useState(true);\n const [searchWordOnly, setSearchWordOnly] = useState(true);\n const [exactMatch, setExactMatch] = useState(false);\n const location = useLocation();\n const history = useHistory();\n let searchBox = null;\n\n // TODO: fix the race condition with the useEffects here\n\n useEffect(() => {\n // on load of the page, make sure to load all items\n showAllItems(showAllItemsArgs);\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n // when items change (e.g. the data has loaded)\n // check if we need to perform a search\n if (items.length > 0) checkQueryString();\n }, [items]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const checkQueryString = () => {\n console.log(\"checkQueryString\");\n if (location.search) {\n const query = queryString.parse(location.search);\n if (query.search) {\n setText(query.search);\n vocyaApiContext.setIsSearching(true);\n _searchItems();\n return true;\n }\n }\n setText(\"\");\n return false;\n };\n\n const setSearchText = (text) => {\n const query = queryString.parse(location.search);\n if (text) query.search = text;\n else delete query.search;\n // here location is the path after the domain name\n // location.search is the whole query string\n // location.search.search is the string the user typed in the search box\n history.push({\n location,\n search: queryString.stringify({ ...query }),\n });\n setText(text);\n };\n\n useEffect(() => {\n console.log(\"location changed, search for items and focus searchBox\");\n if (!checkQueryString()) {\n showAllItems(showAllItemsArgs);\n }\n // TODO: move to context (same with Navbar.js)\n const hamburgerMenuMaxWidth = 1500;\n // on large screens (assume pc/laptop devices) focus the searchBox\n if (window.innerWidth > hamburgerMenuMaxWidth) {\n // focus the searchBox on a location change (and thus initial loading)\n searchBox.focus();\n }\n // we don't want _searchItems in the dependency array, so ignore the warning\n }, [location]); // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n console.log(\"checkboxes changed, search for items if liveSearch\");\n if (liveSearch) _searchItems();\n // we don't want _searchItems in the dependency array, so ignore the warning\n }, [liveSearch, searchWordOnly, exactMatch]); // eslint-disable-line react-hooks/exhaustive-deps\n\n let _searchItems = () => {\n if (text === \"\") {\n console.log(\"fetching all items\");\n showAllItems(showAllItemsArgs);\n } else {\n console.log(\"searching items for\", text);\n searchItems({\n text: text,\n searchWordOnly: searchWordOnly,\n exactMatch: exactMatch,\n });\n }\n };\n\n let onSubmit = (e) => {\n e.preventDefault();\n if (text === \"\") {\n setAlert(\"Please enter something\", \"danger\");\n } else {\n _searchItems();\n }\n };\n\n return (\n
\n
\n setLiveSearch(checked)}\n defaultValue={true}\n />\n setSearchWordOnly(checked)}\n defaultValue={true}\n />\n setExactMatch(checked)}\n defaultValue={false}\n />\n {\n // TODO: add if words: add benkyou button\n }\n
\n
\n (searchBox = input)}\n onChange={(e) => setSearchText(e.target.value)}\n onKeyDown={(e) => e.code === \"Escape\" && setSearchText(\"\")}\n />\n {!liveSearch && (\n \n )}\n \n {vocyaApiContext.isSearching && (\n {\n showAllItems(showAllItemsArgs);\n setSearchText(\"\");\n }}\n >\n Show all {itemName}\n \n )}\n
\n );\n};\n\nSearch.propTypes = {\n searchItems: PropTypes.func.isRequired,\n showAllItems: PropTypes.func.isRequired,\n setAlert: PropTypes.func.isRequired,\n};\n\nexport default Search;\n","export default __webpack_public_path__ + \"static/media/spinner.6b454523.gif\";","import React, { Fragment } from \"react\";\n\nimport spinner from \"./spinner.gif\";\n\nconst Spinner = () => (\n \n \n \n);\n\nexport default Spinner;\n","import React, { Fragment, useContext, useEffect } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport VocyaApiContext from \"../../context/vocya_api/VocyaApiContext\";\nimport Spinner from \"../layout/Spinner\";\n\nconst Course = ({ match }) => {\n const vocyaApiContext = useContext(VocyaApiContext);\n\n const { course, loading, getCourse } = vocyaApiContext;\n\n useEffect(() => {\n getCourse(match.params);\n // eslint-disable-next-line\n }, []);\n\n if (loading) return ;\n\n const singleItemStyle = {\n margin: \"auto\",\n width: \"max-content\",\n };\n const courseStyle = {\n marginTop: \"1rem\",\n marginBottom: \"1rem\",\n width: \"max-content\",\n };\n\n return (\n \n
\n \n Back to Courses\n \n {course ? (\n \n
\n

\n Course\n

\n

{course.name}

\n
\n \n {course.abbreviation} Chapters\n \n \n {course.abbreviation} Words\n \n
\n
{JSON.stringify(course, null, 2)}
\n
\n
\n ) : (\n
\n

\n Error course \"{match.params.co_id}\" not found!\n

\n
\n )}\n
\n
\n );\n};\n\nexport default Course;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Link } from \"react-router-dom\";\n\nconst CourseItem = ({ course: { id, abbreviation, name } }) => {\n return (\n
\n \n
\n

{abbreviation}

\n

{name}

\n
\n

\n

\n \n Chapters\n \n \n Words\n \n

\n \n
\n );\n};\n\nCourseItem.propTypes = {\n course: PropTypes.object.isRequired,\n};\n\nexport default CourseItem;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport CourseItem from \"./CourseItem\";\n\nconst Courses = ({ courses }) => {\n return (\n
\n {courses.map((course) => (\n \n ))}\n
\n );\n};\n\nCourses.propTypes = {\n courses: PropTypes.array.isRequired,\n};\n\nexport default Courses;\n","import React, { Fragment, useContext, useEffect } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport VocyaApiContext from \"../../context/vocya_api/VocyaApiContext\";\nimport Spinner from \"../layout/Spinner\";\n\nconst Chapter = ({ match }) => {\n const vocyaApiContext = useContext(VocyaApiContext);\n\n const { chapter, loading } = vocyaApiContext;\n\n useEffect(() => {\n if (match.params.co_id && match.params.ch_id) {\n vocyaApiContext.getCourseChapter(match.params);\n } else {\n vocyaApiContext.getChapter(match.params);\n }\n // eslint-disable-next-line\n }, []);\n\n if (loading) return ;\n\n const singleItemStyle = {\n margin: \"auto\",\n width: \"max-content\",\n };\n const chapterStyle = {\n marginTop: \"1rem\",\n marginBottom: \"1rem\",\n width: \"max-content\",\n };\n\n return (\n \n
\n \n Back to Chapters\n \n {chapter ? (\n \n
\n

\n Course\n

\n

{chapter.course_name}

\n

\n Chapter\n

\n

{chapter.id}

\n

{chapter.name}

\n
\n \n {chapter.id} Words\n \n
\n
{JSON.stringify(chapter, null, 2)}
\n
\n
\n ) : (\n
\n

\n Error chapter \"{match.params.ch_id}\" not found!\n

\n
\n )}\n
\n
\n );\n};\n\nexport default Chapter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Link } from \"react-router-dom\";\n\nconst ChapterItem = ({ chapter: { id, name } }) => {\n return (\n
\n \n
\n

{id}

\n

{name}

\n
\n

\n

\n \n Words\n \n

\n \n
\n );\n};\n\nChapterItem.propTypes = {\n chapter: PropTypes.object.isRequired,\n};\n\nexport default ChapterItem;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport ChapterItem from \"./ChapterItem\";\n\nconst Chapters = ({ chapters }) => {\n return (\n
\n {chapters.map((chapter) => (\n \n ))}\n
\n );\n};\n\nChapters.propTypes = {\n chapters: PropTypes.array.isRequired,\n};\n\nexport default Chapters;\n","import React, { Fragment, useContext, useEffect } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport VocyaApiContext from \"../../context/vocya_api/VocyaApiContext\";\nimport Spinner from \"../layout/Spinner\";\n\nconst Word = ({ match }) => {\n const vocyaApiContext = useContext(VocyaApiContext);\n\n const { word, loading } = vocyaApiContext;\n\n useEffect(() => {\n if (match.params.co_id && match.params.ch_id && match.params.wo_id) {\n vocyaApiContext.getCourseChapterWord(match.params);\n } else if (match.params.co_id && match.params.wo_id) {\n vocyaApiContext.getCourseWord(match.params);\n } else if (match.params.ch_id && match.params.wo_id) {\n vocyaApiContext.getChapterWord(match.params);\n } else {\n vocyaApiContext.getWord(match.params);\n }\n // eslint-disable-next-line\n }, []);\n\n if (loading) return ;\n\n const singleItemStyle = {\n margin: \"auto\",\n width: \"max-content\",\n };\n const wordStyle = {\n marginTop: \"1rem\",\n marginBottom: \"1rem\",\n width: \"max-content\",\n };\n\n return (\n \n
\n \n Back to Search\n \n {word ? (\n \n {word.nihongo && (\n
\n

\n Japanese\n

\n

\n {word.nihongo}\n

\n
\n )}\n {word.hiragana && (\n
\n

\n Hiragana\n

\n

\n {word.hiragana}\n

\n
\n )}\n {word.dutch && (\n
\n

\n Dutch\n

\n

\n {word.dutch}\n

\n
\n )}\n
\n
{JSON.stringify(word, null, 2)}
\n
\n
\n ) : (\n
\n

\n Error word \"{match.params.wo_id}\" not found!\n

\n
\n )}\n
\n
\n );\n};\n\nexport default Word;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Link } from \"react-router-dom\";\n\nconst WordItem = ({ word: { id, dutch, nihongo, hiragana, romaji } }) => {\n return (\n
\n \n

{dutch}

\n

{nihongo}

\n

{hiragana}

\n

{romaji}

\n \n
\n );\n};\n\nWordItem.propTypes = {\n word: PropTypes.object.isRequired,\n};\n\nexport default WordItem;\n","import React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport WordItem from \"./WordItem\";\n\nconst Words = ({ words }) => {\n const [allWords, setAllWords] = useState([]);\n const [shownWords, setShownWords] = useState([]);\n const [maxElements, setMaxElements] = useState(0);\n const wordsPerPage = 50;\n const targetPixelsFromBottom = 2000;\n\n // if words change, reset the max elements on the page to '2 pages'\n useEffect(() => {\n setAllWords(words);\n setMaxElements(2 * wordsPerPage);\n }, [words]);\n\n // if allWords array or the maxElements change, update the shownWords\n useEffect(() => {\n setShownWords(allWords.slice(0, maxElements));\n }, [allWords, maxElements]);\n\n // handle scrolling; add additional elements when pixelsFromBottom is reached\n useEffect(() => {\n const handleScroll = (e) => {\n const scrollHeight = e.target.scrollingElement.scrollHeight;\n const scrollTop = e.target.scrollingElement.scrollTop;\n const clientHeight = e.target.scrollingElement.clientHeight;\n const currentPixelsFromBottom = scrollHeight - scrollTop - clientHeight;\n if (currentPixelsFromBottom <= targetPixelsFromBottom) {\n if (maxElements < allWords.length) {\n setMaxElements(maxElements + wordsPerPage);\n }\n }\n };\n window.addEventListener(\"scroll\", handleScroll, { passive: true });\n return () => {\n // this cleans up the event handler when the component unmounts\n window.removeEventListener(\"scroll\", handleScroll);\n };\n }, [maxElements, allWords]);\n\n return (\n
\n Search results: {allWords.length}, shown: {shownWords.length}\n
\n {shownWords.map((word) => (\n \n ))}\n
\n
\n );\n};\n\nWords.propTypes = {\n words: PropTypes.array.isRequired,\n};\n\nexport default Words;\n","import React, { Fragment, useContext, useState } from \"react\";\nimport { BrowserRouter as Router, Switch, Route, Link } from \"react-router-dom\";\nimport \"./App.css\";\n\nimport VocyaApiContext from \"./context/vocya_api/VocyaApiContext\";\nimport About from \"./components/pages/About\";\nimport Alert from \"./components/layout/Alert\";\nimport Benkyou from \"./components/benkyou/Benkyou\";\nimport Navbar from \"./components/layout/Navbar\";\nimport CacheBuster from \"./components/utils/CacheBuster\";\nimport Search from \"./components/utils/Search\";\nimport Course from \"./components/courses/Course\";\nimport Courses from \"./components/courses/Courses\";\nimport Chapter from \"./components/chapters/Chapter\";\nimport Chapters from \"./components/chapters/Chapters\";\nimport Word from \"./components/words/Word\";\nimport Words from \"./components/words/Words\";\n\nconst App = () => {\n const vocyaApiContext = useContext(VocyaApiContext);\n\n const [filteredCourses, setFilteredCourses] = useState([]);\n const [filteredChapters, setFilteredChapters] = useState([]);\n const [filteredWords, setFilteredWords] = useState([]);\n const [alert, setAlert] = useState(null);\n\n const performSearch = async (\n text,\n searchWordOnly,\n searchWordOnlyKeys,\n exactMatch,\n items\n ) => {\n vocyaApiContext.setLoading(true);\n vocyaApiContext.setIsSearching(true);\n var filteredItems = [];\n let textLowerSplit = text.toLowerCase().split(/[\\s/]+/);\n items.forEach((item) => {\n let res = textLowerSplit.every((splittedText) => {\n return Object.entries(item).some(([key, value]) => {\n if (searchWordOnly && !searchWordOnlyKeys.includes(key)) return false;\n if (exactMatch) {\n let valueLowerSplit = value.toLowerCase().split(/[\\s/]+/);\n return valueLowerSplit.some((splittedValue) => {\n return (\n splittedValue.replace(/[(),;.]/g, \"\") ===\n splittedText.replace(/[(),;.]/g, \"\")\n );\n });\n } else {\n return value.toLowerCase().includes(splittedText);\n }\n });\n });\n res && filteredItems.push(item);\n });\n return filteredItems;\n };\n\n // perform the course search locally instead of via the API\n const searchCourse = async ({ text, searchWordOnly, exactMatch }) => {\n let searchWordOnlyKeys = [\"abbreviation\", \"name\"];\n let items = vocyaApiContext.courses;\n let filtered = await performSearch(\n text,\n searchWordOnly,\n searchWordOnlyKeys,\n exactMatch,\n items\n );\n vocyaApiContext.setIsSearching(true);\n setFilteredCourses(filtered);\n vocyaApiContext.setLoading(false);\n };\n\n // perform the chapter search locally instead of via the API\n const searchChapter = async ({ text, searchWordOnly, exactMatch }) => {\n let searchWordOnlyKeys = [\"id\", \"name\"];\n let items = vocyaApiContext.chapters;\n let filtered = await performSearch(\n text,\n searchWordOnly,\n searchWordOnlyKeys,\n exactMatch,\n items\n );\n vocyaApiContext.setIsSearching(true);\n setFilteredChapters(filtered);\n vocyaApiContext.setLoading(false);\n };\n\n // perform the word search locally instead of via the API\n const searchWord = async ({ text, searchWordOnly, exactMatch }) => {\n let searchWordOnlyKeys = [\"dutch\", \"hiragana\", \"nihongo\", \"romaji\"];\n let items = vocyaApiContext.words;\n let filtered = await performSearch(\n text,\n searchWordOnly,\n searchWordOnlyKeys,\n exactMatch,\n items\n );\n vocyaApiContext.setIsSearching(true);\n setFilteredWords(filtered);\n vocyaApiContext.setLoading(false);\n };\n\n const [timeoutId, setTimeoutId] = useState(null);\n // show an alert\n const showAlert = (msg, type) => {\n // store the msg and type information in alert object in state\n setAlert({ msg, type });\n // if the timeout was already set, unset the timeout to reset it to the full period\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n }\n // set the timeout and store the timeout ID\n setTimeoutId(\n setTimeout(() => {\n setAlert(null);\n }, 5000)\n );\n };\n\n return (\n \n \n \n \n {({\n cacheBusterLoading,\n isLatestVersion,\n currentVersion,\n latestVersion,\n refreshCacheAndReload,\n }) => {\n if (!cacheBusterLoading && !isLatestVersion) {\n return (\n \n There is a new version of the vocya dashboard available!\n
\n You are using {currentVersion} and {latestVersion} is\n available.\n
Click on this message to reload the window.
\n If this doesn't work try pressing Ctrl+F5 to force refresh\n \n );\n }\n return null;\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 (\n
\n \n \n Back to Courses\n \n \n Back to Course\n \n \n \n \n
\n )}\n />\n \n (\n
\n \n \n Back to Chapters\n \n \n Back to Chapter\n \n \n \n \n
\n )}\n />\n \n (\n
\n \n \n Back to Courses\n \n \n Back to Course\n \n \n \n \n
\n )}\n />\n \n (\n
\n \n \n \n \n
\n )}\n />\n \n (\n
\n \n \n Back to Chapters\n \n \n Back to Chapter\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 App;\n","export const GET_COURSES = \"GET_COURSES\";\nexport const GET_COURSE = \"GET_COURSE\";\nexport const GET_COURSE_CHAPTERS = \"GET_COURSE_CHAPTERS\";\nexport const GET_COURSE_CHAPTER = \"GET_COURSE_CHAPTER\";\nexport const GET_COURSE_CHAPTER_WORDS = \"GET_COURSE_CHAPTER_WORDS\";\nexport const GET_COURSE_CHAPTER_WORD = \"GET_COURSE_CHAPTER_WORD\";\nexport const GET_COURSE_WORDS = \"GET_COURSE_WORDS\";\nexport const GET_COURSE_WORD = \"GET_COURSE_WORD\";\nexport const GET_CHAPTERS = \"GET_CHAPTERS\";\nexport const GET_CHAPTER = \"GET_CHAPTER\";\nexport const GET_CHAPTER_WORDS = \"GET_CHAPTER_WORDS\";\nexport const GET_CHAPTER_WORD = \"GET_CHAPTER_WORD\";\nexport const GET_WORDS = \"GET_WORDS\";\nexport const GET_WORD = \"GET_WORD\";\nexport const SET_LOADING = \"SET_LOADING\";\nexport const SET_IS_SEARCHING = \"SET_IS_SEARCHING\";\nexport const ACTION_UPDATE_DATABASE = \"ACTION_UPDATE_DATABASE\";\n","import {\n GET_COURSES,\n GET_COURSE,\n GET_COURSE_CHAPTERS,\n GET_COURSE_CHAPTER,\n GET_COURSE_CHAPTER_WORDS,\n GET_COURSE_CHAPTER_WORD,\n GET_COURSE_WORDS,\n GET_COURSE_WORD,\n GET_CHAPTERS,\n GET_CHAPTER,\n GET_CHAPTER_WORDS,\n GET_CHAPTER_WORD,\n GET_WORDS,\n GET_WORD,\n SET_LOADING,\n SET_IS_SEARCHING,\n ACTION_UPDATE_DATABASE,\n} from \"../types\";\n\nconst vocyaApiReducer = (state, action) => {\n switch (action.type) {\n case GET_COURSES:\n return { ...state, courses: action.payload, loading: false };\n case GET_COURSE:\n return { ...state, course: action.payload, loading: false };\n case GET_COURSE_CHAPTERS:\n return { ...state, chapters: action.payload, loading: false };\n case GET_COURSE_CHAPTER:\n return { ...state, chapter: action.payload, loading: false };\n case GET_COURSE_CHAPTER_WORDS:\n return { ...state, words: action.payload, loading: false };\n case GET_COURSE_CHAPTER_WORD:\n return { ...state, word: action.payload, loading: false };\n case GET_COURSE_WORDS:\n return { ...state, words: action.payload, loading: false };\n case GET_COURSE_WORD:\n return { ...state, word: action.payload, loading: false };\n case GET_CHAPTERS:\n return { ...state, chapters: action.payload, loading: false };\n case GET_CHAPTER:\n return { ...state, chapter: action.payload, loading: false };\n case GET_CHAPTER_WORDS:\n return { ...state, words: action.payload, loading: false };\n case GET_CHAPTER_WORD:\n return { ...state, word: action.payload, loading: false };\n case GET_WORDS:\n return { ...state, words: action.payload, loading: false };\n case GET_WORD:\n return { ...state, word: action.payload, loading: false };\n case SET_LOADING:\n return { ...state, loading: action.payload };\n case SET_IS_SEARCHING:\n return { ...state, isSearching: action.payload };\n case ACTION_UPDATE_DATABASE:\n return { ...state, dbUpdateStatus: action.payload };\n default:\n return state;\n }\n};\n\nexport default vocyaApiReducer;\n","import axios from \"axios\";\n\nconst API_ENDPOINT = \"https://api.vocya.hetorus.nl\";\n\nexport const apiCourses = async () => {\n return await axios.get(`${API_ENDPOINT}/courses`);\n};\n\nexport const apiCourse = async (co_id) => {\n return await axios.get(`${API_ENDPOINT}/course/${co_id}`);\n};\n\nexport const apiCourseChapters = async (co_id) => {\n return await axios.get(`${API_ENDPOINT}/course/${co_id}/chapters`);\n};\n\nexport const apiCourseChapter = async (co_id, ch_id) => {\n return await axios.get(`${API_ENDPOINT}/course/${co_id}/chapter/${ch_id}`);\n};\n\nexport const apiCourseChapterWords = async (co_id, ch_id) => {\n return await axios.get(\n `${API_ENDPOINT}/course/${co_id}/chapter/${ch_id}/words`\n );\n};\n\nexport const apiCourseChapterWord = async (co_id, ch_id, wo_id) => {\n return await axios.get(\n `${API_ENDPOINT}/course/${co_id}/chapter/${ch_id}/word/${wo_id}`\n );\n};\n\nexport const apiCourseWords = async (co_id) => {\n return await axios.get(`${API_ENDPOINT}/course/${co_id}/words`);\n};\n\nexport const apiCourseWord = async (co_id, wo_id) => {\n return await axios.get(`${API_ENDPOINT}/course/${co_id}/word/${wo_id}`);\n};\n\nexport const apiChapters = async () => {\n return await axios.get(`${API_ENDPOINT}/chapters`);\n};\n\nexport const apiChapter = async (ch_id) => {\n return await axios.get(`${API_ENDPOINT}/chapter/${ch_id}`);\n};\n\nexport const apiChapterWords = async (ch_id) => {\n return await axios.get(`${API_ENDPOINT}/chapter/${ch_id}/words`);\n};\n\nexport const apiChapterWord = async (ch_id, wo_id) => {\n return await axios.get(`${API_ENDPOINT}/chapter/${ch_id}/word/${wo_id}`);\n};\n\nexport const apiWords = async () => {\n return await axios.get(`${API_ENDPOINT}/words`);\n};\n\nexport const apiWord = async (id) => {\n return await axios.get(`${API_ENDPOINT}/word/${id}`);\n};\n\nexport const apiUpdateDatabase = async () => {\n return await axios.get(`${API_ENDPOINT}/update-database`);\n};\n","import { useReducer } from \"react\";\nimport vocyaApiReducer from \"./vocyaApiReducer\";\nimport VocyaApiContext from \"./VocyaApiContext\";\nimport {\n GET_COURSES,\n GET_COURSE,\n GET_COURSE_CHAPTERS,\n GET_COURSE_CHAPTER,\n GET_COURSE_CHAPTER_WORDS,\n GET_COURSE_CHAPTER_WORD,\n GET_COURSE_WORDS,\n GET_COURSE_WORD,\n GET_CHAPTERS,\n GET_CHAPTER,\n GET_CHAPTER_WORDS,\n GET_CHAPTER_WORD,\n GET_WORDS,\n GET_WORD,\n SET_LOADING,\n SET_IS_SEARCHING,\n ACTION_UPDATE_DATABASE,\n} from \"../types\";\nimport {\n apiChapter,\n apiChapters,\n apiChapterWord,\n apiChapterWords,\n apiCourse,\n apiCourseChapter,\n apiCourseChapters,\n apiCourseChapterWord,\n apiCourseChapterWords,\n apiCourses,\n apiCourseWord,\n apiCourseWords,\n apiWord,\n apiWords,\n apiUpdateDatabase,\n} from \"../../components/utils/VocyaAPI\";\n\nconst VocyaApiState = (props) => {\n const initialState = {\n courses: [],\n course: {},\n chapters: [],\n chapter: {},\n words: [],\n word: {},\n loading: false,\n isSearching: false,\n dbUpdateStatus: \"no update performed\",\n };\n\n const [state, dispatch] = useReducer(vocyaApiReducer, initialState);\n\n // get courses\n const getCourses = async () => {\n setupPageForNewContent();\n const res = await apiCourses();\n dispatch({ type: GET_COURSES, payload: res.data });\n };\n\n // get course\n const getCourse = async ({ co_id }) => {\n setupPageForNewContent();\n const res = await apiCourse(co_id);\n dispatch({ type: GET_COURSE, payload: res.data[0] });\n };\n\n // get course chapters\n const getCourseChapters = async ({ co_id }) => {\n setupPageForNewContent();\n const res = await apiCourseChapters(co_id);\n dispatch({ type: GET_COURSE_CHAPTERS, payload: res.data });\n };\n\n // get course chapter\n const getCourseChapter = async ({ co_id, ch_id }) => {\n setupPageForNewContent();\n const res = await apiCourseChapter(co_id, ch_id);\n dispatch({ type: GET_COURSE_CHAPTER, payload: res.data[0] });\n };\n\n // get course chapter words\n const getCourseChapterWords = async ({ co_id, ch_id }) => {\n setupPageForNewContent();\n const res = await apiCourseChapterWords(co_id, ch_id);\n dispatch({ type: GET_COURSE_CHAPTER_WORDS, payload: res.data });\n };\n\n // get course chapter word\n const getCourseChapterWord = async ({ co_id, ch_id, wo_id }) => {\n setupPageForNewContent();\n const res = await apiCourseChapterWord(co_id, ch_id, wo_id);\n dispatch({ type: GET_COURSE_CHAPTER_WORD, payload: res.data[0] });\n };\n\n // get course words\n const getCourseWords = async ({ co_id }) => {\n setupPageForNewContent();\n const res = await apiCourseWords(co_id);\n dispatch({ type: GET_COURSE_WORDS, payload: res.data });\n };\n\n // get course word\n const getCourseWord = async ({ co_id, wo_id }) => {\n setupPageForNewContent();\n const res = await apiCourseWord(co_id, wo_id);\n dispatch({ type: GET_COURSE_WORD, payload: res.data[0] });\n };\n\n // get chapters\n const getChapters = async () => {\n setupPageForNewContent();\n const res = await apiChapters();\n dispatch({ type: GET_CHAPTERS, payload: res.data });\n };\n\n // get chapter\n const getChapter = async ({ ch_id }) => {\n setupPageForNewContent();\n const res = await apiChapter(ch_id);\n dispatch({ type: GET_CHAPTER, payload: res.data[0] });\n };\n\n // get chapter words\n const getChapterWords = async ({ ch_id }) => {\n setupPageForNewContent();\n const res = await apiChapterWords(ch_id);\n dispatch({ type: GET_CHAPTER_WORDS, payload: res.data });\n };\n\n // get chapter word\n const getChapterWord = async ({ ch_id, wo_id }) => {\n setupPageForNewContent();\n const res = await apiChapterWord(ch_id, wo_id);\n dispatch({ type: GET_CHAPTER_WORD, payload: res.data[0] });\n };\n\n // get words\n const getWords = async () => {\n setupPageForNewContent();\n const res = await apiWords();\n dispatch({ type: GET_WORDS, payload: res.data });\n };\n\n // get word\n const getWord = async ({ wo_id }) => {\n setupPageForNewContent();\n const res = await apiWord(wo_id);\n dispatch({ type: GET_WORD, payload: res.data[0] });\n };\n\n // update the Vocjem database\n const actionUpdateDatabase = async () => {\n dispatch({ type: ACTION_UPDATE_DATABASE, payload: \"updating database...\" });\n const res = await apiUpdateDatabase();\n const updateResult = res.data.result || \"failure\";\n dispatch({ type: ACTION_UPDATE_DATABASE, payload: updateResult });\n };\n\n // setup page for new content, clearing loading and is searching\n const setupPageForNewContent = () => {\n setLoading(true);\n setIsSearching(false);\n };\n\n // set loading\n const setLoading = (loading) =>\n dispatch({ type: SET_LOADING, payload: loading });\n\n // set is searching\n const setIsSearching = (isSearching) =>\n dispatch({ type: SET_IS_SEARCHING, payload: isSearching });\n\n return (\n \n {props.children}\n \n );\n};\n\nexport default VocyaApiState;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport reportWebVitals from \"./reportWebVitals\";\n\nimport App from \"./App\";\nimport VocyaApiState from \"./context/vocya_api/VocyaApiState\";\n\nReactDOM.render(\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\nreportWebVitals();\n"],"sourceRoot":""}