146 lines
No EOL
29 KiB
JavaScript
Executable file
146 lines
No EOL
29 KiB
JavaScript
Executable file
/*
|
|
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
|
|
* This devtool is neither made for production nor for readable output files.
|
|
* It uses "eval()" calls to create a separate source file in the browser devtools.
|
|
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
|
* or disable the default devtool with "devtool: false".
|
|
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
|
*/
|
|
/******/ (() => { // webpackBootstrap
|
|
/******/ "use strict";
|
|
/******/ var __webpack_modules__ = ({
|
|
|
|
/***/ "./src/domifier.js":
|
|
/*!*************************!*\
|
|
!*** ./src/domifier.js ***!
|
|
\*************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"changeCurrentProject\": () => (/* binding */ changeCurrentProject),\n/* harmony export */ \"createProjectDOM\": () => (/* binding */ createProjectDOM),\n/* harmony export */ \"createTodo\": () => (/* binding */ createTodo),\n/* harmony export */ \"displayTodo\": () => (/* binding */ displayTodo),\n/* harmony export */ \"editTodo\": () => (/* binding */ editTodo),\n/* harmony export */ \"initDOM\": () => (/* binding */ initDOM)\n/* harmony export */ });\n/* harmony import */ var _todo_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./todo.js */ \"./src/todo.js\");\n/* harmony import */ var _project_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./project.js */ \"./src/project.js\");\n/* harmony import */ var _projects_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./projects.js */ \"./src/projects.js\");\n\n\n\n\nconst CURRENTPROJECT = document.getElementById(\"dropdownMenuButton1\");\n\n// shim for setting proper prototype when pulling from JSON\nconst PROJECT = (0,_project_js__WEBPACK_IMPORTED_MODULE_1__.project)(\"shim\");\n\n// initializes certain dom objects\nconst initDOM = () => {\n // creates New Todo button\n const newTodo = document.createElement(\"button\");\n newTodo.className = \"btn btn-warning\";\n newTodo.textContent = \"+ New Todo\";\n // event handlers\n newTodo.onclick = () => createTodo();\n // appends\n document.querySelector(\".nav-pills\").appendChild(newTodo)\n\n // creates New Project button\n const newProject = document.createElement(\"button\");\n newProject.className = \"btn btn-success\";\n newProject.textContent = \"+ New Project\";\n // event handlers\n newProject.onclick = () => {\n // asks for a project name\n const projectName = prompt(\"What will your new project be called?\", \"Default Project\");\n const dummyProjects = (0,_projects_js__WEBPACK_IMPORTED_MODULE_2__.getArray)();\n // checks for blanks or default values\n if (projectName === null || projectName === \"\" || projectName === \"Default Project\") {\n alert(\"Please enter a valid project name\");\n }\n\n // checks if any projects are named the same way\n else if (dummyProjects.find (item => item.name === projectName)) {\n alert(\"Please enter an unused project name\");\n }\n // if valid, create new project\n else {\n createProject(projectName);\n }\n }\n // appends\n document.querySelector(\".nav-pills\").appendChild(newProject)\n\n // creates Delete Project button\n const delProject = document.createElement(\"button\");\n delProject.className = \"btn btn-danger\";\n delProject.textContent = \"x Delete Project\";\n // event handlers\n delProject.onclick = () => deleteProject();\n // appends\n document.querySelector(\".nav-pills\").appendChild(delProject);\n\n displayProjects();\n}\n\nconst changeCurrentProject = projectName => {\n // changes dropdown button to main project\n CURRENTPROJECT.textContent = projectName;\n // clears the board\n document.querySelector(\"main\").innerHTML = \"\";\n // finds all todos in the project and displays them (if any)\n const dummyProjects = (0,_projects_js__WEBPACK_IMPORTED_MODULE_2__.getArray)();\n const projectInArray = dummyProjects.find (item => item.name === CURRENTPROJECT.textContent);\n if (projectInArray.todos.length > -1) {\n projectInArray.todos.forEach(todo => displayTodo(todo));\n }\n}\n\nconst displayTodo = todo => {\n // sets up the necessary containers\n const card = document.createElement('div');\n card.className = \"card\";\n const cardBody = document.createElement('div');\n cardBody.className = \"card-body\";\n // appends title of current todo to DOM\n const title = document.createElement('h5');\n title.className = \"card-title mb-2\";\n title.textContent = todo.title;\n const dueDate = document.createElement('h6');\n dueDate.className = \"card-subtitle text-muted mb-1\";\n // bit of a rigamarole due to localStorage\n const date = new Date(Date.parse(todo.dueDate));\n dueDate.textContent = \"Due: \" + date.toDateString();\n //\n const priority = document.createElement('h6');\n priority.className = \"mb-3 btn prioritybtn\";\n const determinePriority = () => {\n if (todo.priority === 0) {\n priority.className = priority.className + \" btn-success\";\n priority.textContent = \"Low\";\n }\n else if (todo.priority == 1) {\n priority.className = priority.className + \" btn-warning\";\n priority.textContent = \"Medium\";\n }\n else if (todo.priority == 2) {\n priority.className = priority.className + \" btn-danger\";\n priority.textContent = \"High\";\n }\n return priority;\n }\n priority.textContent = \"Priority: \" + determinePriority().textContent;\n\n const comment = document.createElement('p');\n comment.className = \"card-text text-muted\";\n comment.textContent = todo.description;\n\n const editButton = document.createElement('button');\n editButton.className = \"btn btn-primary me-1\";\n const editButtonText = document.createElement('div');\n editButtonText.textContent = \"Edit\";\n editButton.onclick = () => editTodo(cardBody, todo);\n\n const deleteButton = document.createElement('button');\n deleteButton.className = \"btn btn-danger ms-1\";\n const deleteButtonText = document.createElement('div');\n deleteButtonText.textContent = \"Delete\";\n deleteButton.onclick = () => deleteTodo(todo, card);\n\n // append to DOM\n document.querySelector(\"main\").appendChild(card);\n card.appendChild(cardBody);\n cardBody.appendChild(title);\n cardBody.appendChild(dueDate);\n cardBody.appendChild(priority);\n cardBody.appendChild(comment);\n cardBody.appendChild(editButton);\n editButton.appendChild(editButtonText);\n cardBody.appendChild(deleteButton);\n deleteButton.appendChild(deleteButtonText);\n}\n\nconst deleteProject = () => {\n // removes the todos from the project\n const dummyProjects = (0,_projects_js__WEBPACK_IMPORTED_MODULE_2__.getArray)();\n const projectInArray = dummyProjects.find (item => item.name === CURRENTPROJECT.textContent);\n projectInArray.todos = [];\n \n // finds the current project in the dropdown menu\n // gets array of dropdown objects in dom and casts it to a \"real\" array;\n const dropdownArray = Array.prototype.slice.call(document.getElementsByClassName(\"dropdown-item\"));\n // finds the project which matches current project\n const currentProjectDropdown = dropdownArray.find(element => element.textContent === CURRENTPROJECT.textContent);\n // finds the next project\n const nextProjectDropdown = dropdownArray[dropdownArray.indexOf(currentProjectDropdown) + 1];\n const prevProjectDropdown = dropdownArray[dropdownArray.indexOf(currentProjectDropdown) - 1];\n\n // removes the current project from dropdowns\n const li = currentProjectDropdown.parentElement;\n li.parentElement.removeChild(li);\n\n // removes from projects array\n const projectNumber = dummyProjects.indexOf(projectInArray);\n dummyProjects.splice(projectNumber, 1);\n (0,_projects_js__WEBPACK_IMPORTED_MODULE_2__.setArray)(dummyProjects);\n\n // changes current project\n if (nextProjectDropdown) {\n changeCurrentProject(nextProjectDropdown.textContent);\n }\n else if (prevProjectDropdown) {\n changeCurrentProject(prevProjectDropdown.textContent);\n }\n else {\n CURRENTPROJECT.textContent = \"\";\n }\n}\n\nconst createProjectDOM = projectName => {\n // adds to dropdown\n const li = document.createElement(\"li\");\n document.querySelector(\".dropdown-menu\").appendChild(li);\n const dropdownOption = document.createElement(\"a\");\n dropdownOption.className = \"dropdown-item\";\n dropdownOption.textContent = projectName;\n li.appendChild(dropdownOption);\n // event handler for when user clicks the project in dropdowns\n li.onclick = () => changeCurrentProject(projectName);\n\n // changes to new project\n changeCurrentProject(projectName);\n}\n\nconst createTodo = () => {\n // sets up the necessary containers\n const card = document.createElement('div');\n card.className = \"card\";\n const cardBody = document.createElement('div');\n cardBody.className = \"card-body\";\n\n // creates input fields to get user input for todo info\n const title = document.createElement('input');\n title.className = \"card-title mb-2 form-control\";\n title.type = \"text\";\n title.placeholder = \"Title\";\n\n const dueDate = document.createElement('input');\n dueDate.className = \"card-subtitle text-muted mb-2 form-control\";\n dueDate.type = \"date\";\n dueDate.oninput = () => {\n const dueDateSplit = dueDate.value.split('-'); \n if (dueDateSplit[0] && dueDateSplit[0].length > 4) { \n dueDateSplit[0]=dueDateSplit[0].slice(0,4); \n dueDate.value = dueDateSplit.join('-');\n }\n }\n const priority = document.createElement('h6');\n const oldClassName = \"mb-3 btn btn-primary\";\n priority.className = oldClassName;\n priority.textContent = \"Priority\"\n let priorityLevel;\n let counter = 0;\n priority.onclick = () => {\n if (counter === 0) {\n priority.className = oldClassName + \" btn-success\";\n priority.textContent = \"Priority: Low\";\n priorityLevel = counter;\n counter++;\n }\n else if (counter === 1) {\n priority.className = oldClassName + \" btn-warning\";\n priority.textContent = \"Priority: Medium\";\n priorityLevel = counter;\n counter++;\n }\n else {\n priority.className = oldClassName + \" btn-danger\";\n priority.textContent = \"Priority: High\";\n priorityLevel = counter;\n counter = 0;\n }\n }\n\n const comment = document.createElement('input');\n comment.className = \"card-text text-muted form-control mb-3\";\n comment.type = \"text\";\n comment.placeholder = \"Description\"\n\n const createButton = document.createElement('button');\n createButton.className = \"btn btn-success me-1\";\n const createButtonText = document.createElement('div');\n createButtonText.textContent = \"Create\";\n createButton.onclick = () => finalizeTodo();\n\n const deleteButton = document.createElement('button');\n deleteButton.className = \"btn btn-danger ms-1\";\n const deleteButtonText = document.createElement('div');\n deleteButtonText.textContent = \"Cancel\";\n\n deleteButton.onclick = () => document.querySelector(\"main\").removeChild(card);\n\n document.querySelector('main').appendChild(card);\n card.appendChild(cardBody);\n cardBody.appendChild(title);\n cardBody.appendChild(dueDate);\n cardBody.appendChild(priority);\n cardBody.appendChild(comment);\n cardBody.appendChild(createButton);\n createButton.appendChild(createButtonText);\n cardBody.appendChild(deleteButton);\n deleteButton.appendChild(deleteButtonText);\n\n function finalizeTodo() {\n // some validation\n if (title.value === \"Title\" || title.value === \"\") {\n alert(\"Please enter a name for your to-do\");\n }\n else {\n if (priorityLevel || priorityLevel === 0) {\n // adds todo to project\n const finalizedTodo = (0,_todo_js__WEBPACK_IMPORTED_MODULE_0__.todo)(title.value, comment.value, dueDate.valueAsDate, priorityLevel);\n const dummyProjects = (0,_projects_js__WEBPACK_IMPORTED_MODULE_2__.getArray)();\n let foundProject = dummyProjects.find (item => item.name === CURRENTPROJECT.textContent);\n\n foundProject.todos[foundProject.todos.length] = finalizedTodo;\n (0,_projects_js__WEBPACK_IMPORTED_MODULE_2__.setArray)(dummyProjects);\n \n // wipes prompt window\n document.querySelector(\"main\").removeChild(card);\n displayTodo(finalizedTodo);\n }\n else {\n alert(\"Please select a priority for your to-do by clicking the Priority button\");\n }\n }\n }\n}\n\nconst editTodo = (cardBody, todo) => {\n // creates title field and fills with existing title\n const title = document.createElement('input');\n title.className = \"card-title mb-2 form-control\";\n title.type = \"text\";\n // gets title out of existing title (title is the first child of cardBody)\n title.value = cardBody.firstChild.textContent;\n\n \n const dueDate = document.createElement('input');\n dueDate.maxLength = 8;\n dueDate.className = \"card-subtitle text-muted mb-2 form-control\";\n dueDate.type = \"date\";\n if (typeof todo.dueDate === \"object\") {\n dueDate.value = todo.dueDate.toISOString().slice(0,10);\n }\n else {\n dueDate.value = todo.dueDate.slice(0,10);\n }\n dueDate.oninput = () => {\n const dueDateSplit = dueDate.value.split('-'); \n if (dueDateSplit[0] && dueDateSplit[0].length > 4) { \n dueDateSplit[0]=dueDateSplit[0].slice(0,4); \n dueDate.value = dueDateSplit.join('-');\n }\n }\n \n const priority = document.createElement('h6');\n const oldClassName = \"mb-3 btn btn-primary\";\n priority.className = oldClassName;\n priority.textContent = \"Priority\";\n let counter;\n let priorityLevel = todo.priority;\n if (todo.priority === 0) {\n priority.className = oldClassName + \" btn-success\";\n priority.textContent = \"Priority: Low\";\n counter = 1;\n }\n else if (todo.priority === 1) {\n priority.className = oldClassName + \" btn-warning\";\n priority.textContent = \"Priority: Medium\";\n counter = 2;\n }\n else {\n priority.className = oldClassName + \" btn-danger\";\n priority.textContent = \"Priority: High\";\n counter = 0;\n }\n\n priority.onclick = () => {\n if (counter === 0) {\n priority.className = oldClassName + \" btn-success\";\n priority.textContent = \"Priority: Low\";\n priorityLevel = counter;\n counter++;\n }\n else if (counter === 1) {\n priority.className = oldClassName + \" btn-warning\";\n priority.textContent = \"Priority: Medium\";\n priorityLevel = counter;\n counter++;\n }\n else {\n priority.className = oldClassName + \" btn-danger\";\n priority.textContent = \"Priority: High\";\n priorityLevel = counter;\n counter = 0;\n }\n }\n\n const comment = document.createElement('input');\n comment.className = \"card-text text-muted form-control mb-3\";\n comment.type = \"text\";\n comment.value = cardBody.children[3].textContent;\n\n for (let i = 0; i < 4; i++) {\n cardBody.removeChild(cardBody.firstChild);\n }\n\n cardBody.firstChild.textContent = \"Finish\";\n cardBody.firstChild.className = \"btn btn-success me-1\";\n cardBody.firstChild.onclick = () => finalizeTodo();\n\n cardBody.prepend(comment);\n cardBody.prepend(priority);\n cardBody.prepend(dueDate);\n cardBody.prepend(title);\n\n function finalizeTodo() {\n // some validation\n if (title.value === \"\") {\n alert(\"Please enter a name for your to-do\");\n }\n else {\n if (priorityLevel || priorityLevel === 0) {\n todo.title = title.value;\n todo.description = comment.value;\n todo.dueDate = dueDate.valueAsDate;\n todo.priority = priorityLevel;\n \n // proper handling\n const dummyProjects = (0,_projects_js__WEBPACK_IMPORTED_MODULE_2__.getArray)();\n const foundProject = dummyProjects.find (item => item.name === CURRENTPROJECT.textContent);\n (0,_projects_js__WEBPACK_IMPORTED_MODULE_2__.setArray)(dummyProjects);\n \n // wipes prompt window\n document.querySelector(\"main\").removeChild(cardBody.parentElement);\n displayTodo(todo);\n }\n else {\n alert(\"Please select a priority for your to-do by clicking the Priority button\")\n }\n }\n }\n}\n\nconst deleteTodo = (todo, card) => {\n document.querySelector(\"main\").removeChild(card);\n const dummyProjects = (0,_projects_js__WEBPACK_IMPORTED_MODULE_2__.getArray)();\n let foundProject = dummyProjects.find (item => item.name === CURRENTPROJECT.textContent);\n const todoIndex = foundProject.todos.indexOf(todo);\n if (todoIndex) {\n foundProject.todos.splice(todoIndex, 1);\n }\n (0,_projects_js__WEBPACK_IMPORTED_MODULE_2__.setArray)(dummyProjects);\n}\n\nconst createProject = (projectName) => {\n const dummyProjects = (0,_projects_js__WEBPACK_IMPORTED_MODULE_2__.getArray)();\n dummyProjects[dummyProjects.length] = (0,_project_js__WEBPACK_IMPORTED_MODULE_1__.project)(projectName);\n (0,_projects_js__WEBPACK_IMPORTED_MODULE_2__.setArray)(dummyProjects);\n createProjectDOM(projectName);\n}\n\nconst displayProjects = () => {\n const dummyProjects = (0,_projects_js__WEBPACK_IMPORTED_MODULE_2__.getArray)();\n dummyProjects.forEach(item => createProjectDOM(item.name));\n}\n\n//# sourceURL=webpack://js-todolist/./src/domifier.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/incrementer.js":
|
|
/*!****************************!*\
|
|
!*** ./src/incrementer.js ***!
|
|
\****************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"incrementer\": () => (/* binding */ incrementer)\n/* harmony export */ });\n// increments date based from today's date on number of days specified\nconst incrementer = (date, days) => {\n date.setDate(date.getDate() + days);\n return date;\n}\n\n//# sourceURL=webpack://js-todolist/./src/incrementer.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/index.js":
|
|
/*!**********************!*\
|
|
!*** ./src/index.js ***!
|
|
\**********************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _todo_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./todo.js */ \"./src/todo.js\");\n/* harmony import */ var _incrementer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./incrementer.js */ \"./src/incrementer.js\");\n/* harmony import */ var _domifier_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./domifier.js */ \"./src/domifier.js\");\n/* harmony import */ var _projects_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./projects.js */ \"./src/projects.js\");\n/* harmony import */ var _project_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./project.js */ \"./src/project.js\");\n\n\n\n\n\n\n\nconst TODAY = new Date();\nlet dummyProjects = (0,_projects_js__WEBPACK_IMPORTED_MODULE_3__.getArray)();\n\ndummyProjects[0] = (0,_project_js__WEBPACK_IMPORTED_MODULE_4__.project)(\"Default Project\");\n\nconst defaultTodo = (0,_todo_js__WEBPACK_IMPORTED_MODULE_0__.todo)(\n \"Default Todo\", \n \"This is the default to-do for the to-do list. Feel free to add some more!\", \n (0,_incrementer_js__WEBPACK_IMPORTED_MODULE_1__.incrementer)(TODAY, 7),\n 0\n);\n\n\ndummyProjects[0].todos[dummyProjects[0].todos.length] = defaultTodo;\n(0,_projects_js__WEBPACK_IMPORTED_MODULE_3__.setArray)(dummyProjects);\n\n(0,_domifier_js__WEBPACK_IMPORTED_MODULE_2__.initDOM)();\n(0,_domifier_js__WEBPACK_IMPORTED_MODULE_2__.changeCurrentProject)(dummyProjects[0].name);\n\n//# sourceURL=webpack://js-todolist/./src/index.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/project.js":
|
|
/*!************************!*\
|
|
!*** ./src/project.js ***!
|
|
\************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"project\": () => (/* binding */ project)\n/* harmony export */ });\nconst project = (name) => {\r\n // sets up array of todo objects\r\n let todos = []\r\n \r\n return {\r\n name,\r\n todos\r\n }\r\n}\n\n//# sourceURL=webpack://js-todolist/./src/project.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/projects.js":
|
|
/*!*************************!*\
|
|
!*** ./src/projects.js ***!
|
|
\*************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"getArray\": () => (/* binding */ getArray),\n/* harmony export */ \"setArray\": () => (/* binding */ setArray)\n/* harmony export */ });\n/* harmony import */ var _storageAvailable_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./storageAvailable.js */ \"./src/storageAvailable.js\");\n// logic for the projects array itself\n\n\n// get and set arrays - get from local storage if available, if not then get from a global var\n// set it here too, as well as extend the regular array methods\n// everything will be here regards getting and setting this stuff, without a need to expose the actual array out to other modules\n\n// master projects array\nlet projectsArray = [];\n\n// tests if a \"projects\" item exists in local storage\nconst projectsExists = localStorage.getItem(\"projects\") ? true : false;\n\n// returns the proper array depending on where it is\nconst getArray = () => {\n // localStorage exists\n if (_storageAvailable_js__WEBPACK_IMPORTED_MODULE_0__.storageAvailable) {\n // \"projects\" exists\n if (projectsExists) {\n // set projects array to local storage and return\n projectsArray = JSON.parse(localStorage.projects);\n return projectsArray;\n }\n else {\n return projectsArray;\n }\n }\n // otherwise return the projects array here\n else {\n return projectsArray;\n }\n}\n\n// easiest workaround to getting too in-depth - passed array is set as the main, depending on if storage exists, etc.\nconst setArray = (array) => {\n // set the master array to passed array - regardless of localStorage\n projectsArray = array;\n // check for localStorage\n if (_storageAvailable_js__WEBPACK_IMPORTED_MODULE_0__.storageAvailable) {\n // and existing \"projects\"\n if (projectsExists) {\n // remove existing array from localStorage\n localStorage.removeItem(\"projects\");\n // add the modified array\n localStorage.projects = JSON.stringify(projectsArray);\n }\n // if \"projects\" doesn't exist, add it\n else {\n localStorage.projects = JSON.stringify(projectsArray);\n }\n }\n}\n\n//# sourceURL=webpack://js-todolist/./src/projects.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/storageAvailable.js":
|
|
/*!*********************************!*\
|
|
!*** ./src/storageAvailable.js ***!
|
|
\*********************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"storageAvailable\": () => (/* binding */ storageAvailable)\n/* harmony export */ });\nfunction storageAvailableFunc(type) {\n let storage;\n try {\n storage = window[type];\n const x = \"__storage_test__\";\n storage.setItem(x, x);\n storage.removeItem(x);\n return true;\n } catch (e) {\n return (\n e instanceof DOMException &&\n // everything except Firefox\n (e.code === 22 ||\n // Firefox\n e.code === 1014 ||\n // test name field too, because code might not be present\n // everything except Firefox\n e.name === \"QuotaExceededError\" ||\n // Firefox\n e.name === \"NS_ERROR_DOM_QUOTA_REACHED\") &&\n // acknowledge QuotaExceededError only if there's something already stored\n storage &&\n storage.length !== 0\n );\n }\n}\n// copyright MDN https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API\n\nconst storageAvailable = storageAvailableFunc(\"localStorage\");\n\n//# sourceURL=webpack://js-todolist/./src/storageAvailable.js?");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/todo.js":
|
|
/*!*********************!*\
|
|
!*** ./src/todo.js ***!
|
|
\*********************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"todo\": () => (/* binding */ todo)\n/* harmony export */ });\n// todo factory function\r\nconst todo = (title, description, dueDate, priority) => {\r\n return {\r\n title,\r\n description,\r\n dueDate,\r\n priority\r\n }\r\n}\n\n//# sourceURL=webpack://js-todolist/./src/todo.js?");
|
|
|
|
/***/ })
|
|
|
|
/******/ });
|
|
/************************************************************************/
|
|
/******/ // The module cache
|
|
/******/ var __webpack_module_cache__ = {};
|
|
/******/
|
|
/******/ // The require function
|
|
/******/ function __webpack_require__(moduleId) {
|
|
/******/ // Check if module is in cache
|
|
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
|
/******/ if (cachedModule !== undefined) {
|
|
/******/ return cachedModule.exports;
|
|
/******/ }
|
|
/******/ // Create a new module (and put it into the cache)
|
|
/******/ var module = __webpack_module_cache__[moduleId] = {
|
|
/******/ // no module.id needed
|
|
/******/ // no module.loaded needed
|
|
/******/ exports: {}
|
|
/******/ };
|
|
/******/
|
|
/******/ // Execute the module function
|
|
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
|
/******/
|
|
/******/ // Return the exports of the module
|
|
/******/ return module.exports;
|
|
/******/ }
|
|
/******/
|
|
/************************************************************************/
|
|
/******/ /* webpack/runtime/define property getters */
|
|
/******/ (() => {
|
|
/******/ // define getter functions for harmony exports
|
|
/******/ __webpack_require__.d = (exports, definition) => {
|
|
/******/ for(var key in definition) {
|
|
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
/******/ }
|
|
/******/ }
|
|
/******/ };
|
|
/******/ })();
|
|
/******/
|
|
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
/******/ (() => {
|
|
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
|
/******/ })();
|
|
/******/
|
|
/******/ /* webpack/runtime/make namespace object */
|
|
/******/ (() => {
|
|
/******/ // define __esModule on exports
|
|
/******/ __webpack_require__.r = (exports) => {
|
|
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
/******/ }
|
|
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
/******/ };
|
|
/******/ })();
|
|
/******/
|
|
/************************************************************************/
|
|
/******/
|
|
/******/ // startup
|
|
/******/ // Load entry module and return exports
|
|
/******/ // This entry module can't be inlined because the eval devtool is used.
|
|
/******/ var __webpack_exports__ = __webpack_require__("./src/index.js");
|
|
/******/
|
|
/******/ })()
|
|
; |