/******/ (() => { // webpackBootstrap /******/ "use strict"; ;// CONCATENATED MODULE: ./src/task/index.ts function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } var Task = /*#__PURE__*/_createClass(function Task(name) { _classCallCheck(this, Task); this.name = name; }); var LiveTask = /*#__PURE__*/function (_Task) { function LiveTask(name) { var _this; _classCallCheck(this, LiveTask); _this = _callSuper(this, LiveTask, [name]); _defineProperty(_this, "done", false); return _this; } _inherits(LiveTask, _Task); return _createClass(LiveTask); }(Task); ;// CONCATENATED MODULE: ./src/storage/index.ts function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } var CURRENT_TASKS = []; var SEPARATOR = ";;"; var STORAGE_KEY = "tasks"; var StorageMode = /*#__PURE__*/function (StorageMode) { StorageMode["Fragment"] = "fragment"; StorageMode["LocalStorage"] = "localStorage"; return StorageMode; }({}); function getStorageMode() { if (window.localStorage) { if (window.localStorage.getItem(STORAGE_KEY)) { return StorageMode.LocalStorage; } } if (window.location.hash !== "") { return StorageMode.Fragment; } return StorageMode.Fragment; } function clearAllStorage() { // StorageMode.Fragment window.location.hash = ""; // StorageMode.LocalStorage window.localStorage.removeItem(STORAGE_KEY); } function decodeTasks() { var _storageMode; var storageMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; storageMode = (_storageMode = storageMode) !== null && _storageMode !== void 0 ? _storageMode : getStorageMode(); var tasks_string; if (storageMode == StorageMode.Fragment) { tasks_string = window.location.hash; if (tasks_string.substring(1, 1) == "#") { tasks_string = tasks_string.substring(1); } } else if (storageMode == StorageMode.LocalStorage) { var _window$localStorage$; tasks_string = (_window$localStorage$ = window.localStorage.getItem(STORAGE_KEY)) !== null && _window$localStorage$ !== void 0 ? _window$localStorage$ : ""; } else { return []; } if (!tasks_string) { return []; } return tasks_string.split(SEPARATOR).map(function (name) { return new LiveTask(name); }); } function loadCurrentTasks() { var storageMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; var tasks = decodeTasks(storageMode !== null && storageMode !== void 0 ? storageMode : getStorageMode()); CURRENT_TASKS.length = 0; CURRENT_TASKS.push.apply(CURRENT_TASKS, _toConsumableArray(tasks)); } function encodeTasks(tasks) { return tasks.map(function (task) { return task.name; }).join(SEPARATOR); } function saveTasks(tasks) { var _storageMode2; var storageMode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; var tasks_string = encodeTasks(tasks); storageMode = (_storageMode2 = storageMode) !== null && _storageMode2 !== void 0 ? _storageMode2 : getStorageMode(); if (storageMode == StorageMode.LocalStorage) { window.localStorage.setItem(STORAGE_KEY, tasks_string); } else if (storageMode == StorageMode.Fragment) { window.location.hash = tasks_string; } } function saveCurrentTasks() { var storageMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; saveTasks(CURRENT_TASKS, storageMode); } function moveStorage(toStorageMode) { clearAllStorage(); saveCurrentTasks(toStorageMode); } ;// CONCATENATED MODULE: ./src/ui/render.ts var TASK_PEN = document.createElement("div"); TASK_PEN.classList.add("tasks"); function createTaskElement(task) { var new_task = document.createElement("input"); new_task.type = "checkbox"; new_task.value = task.name; new_task.classList.add("task"); new_task.checked = task.done; new_task.onchange = function (e) { if (e.currentTarget == null) { return; } task.done = e.currentTarget.checked; }; var name = document.createElement("span"); new_task.appendChild(name); return new_task; } function renderNewTask(task) { var batch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; if (!batch) { saveCurrentTasks(); } TASK_PEN.appendChild(createTaskElement(task)); } function submitNewTask(task) { CURRENT_TASKS.push(task); renderNewTask(task, false); // TODO: extract to some kind of class to tie adding and rendering together } function reRenderCurrentTasks() { TASK_PEN.replaceChildren.apply(TASK_PEN, []); CURRENT_TASKS.forEach(function (task) { return renderNewTask(task); }); saveCurrentTasks(); } ;// CONCATENATED MODULE: ./src/ui/add.ts var ADD_MODAL = document.createElement("div"); ADD_MODAL.classList.add("add-modal"); var ADD_MODAL_NAME_INPUT = document.createElement("input"); ADD_MODAL_NAME_INPUT.classList.add("name-input"); ADD_MODAL_NAME_INPUT.type = "text"; ADD_MODAL_NAME_INPUT.placeholder = "Task name"; ADD_MODAL.appendChild(ADD_MODAL_NAME_INPUT); var ADD_MODAL_SUBMIT = document.createElement("button"); ADD_MODAL_SUBMIT.classList.add("submit"); ADD_MODAL_SUBMIT.type = "submit"; ADD_MODAL_SUBMIT.value = "Create task"; ADD_MODAL_SUBMIT.onclick = function (e) { if (!ADD_MODAL_NAME_INPUT.value) { return; } submitNewTask(new LiveTask(ADD_MODAL_NAME_INPUT.value)); ADD_MODAL.classList.remove("active"); ADD_MODAL_NAME_INPUT.value = ""; }; ADD_MODAL.appendChild(ADD_MODAL_SUBMIT); var ADD_BUTTON = document.createElement("button"); ADD_BUTTON.classList.add("add-button"); function openModal(e) { ADD_MODAL.classList.add("active"); } ADD_BUTTON.addEventListener("click", openModal); ;// CONCATENATED MODULE: ./src/ui/settings.ts function storageSelected(e) { var target = e.currentTarget; if (target.checked) { moveStorage(target.value); } } var STORAGE_FRAGMENT = document.createElement("input"); STORAGE_FRAGMENT.type = "radio"; STORAGE_FRAGMENT.name = "storage"; STORAGE_FRAGMENT.value = StorageMode.Fragment; STORAGE_FRAGMENT.classList.add("storage-".concat(STORAGE_FRAGMENT.value)); STORAGE_FRAGMENT.checked = getStorageMode() == STORAGE_FRAGMENT.value; STORAGE_FRAGMENT.onchange = storageSelected; var STORAGE_LOCALSTORAGE = document.createElement("input"); STORAGE_LOCALSTORAGE.type = "radio"; STORAGE_LOCALSTORAGE.name = "storage"; STORAGE_LOCALSTORAGE.value = StorageMode.LocalStorage; STORAGE_LOCALSTORAGE.classList.add("storage-".concat(STORAGE_LOCALSTORAGE.value)); STORAGE_LOCALSTORAGE.checked = getStorageMode() == STORAGE_LOCALSTORAGE.value; STORAGE_LOCALSTORAGE.onchange = storageSelected; var STORAGE_SETTINGS = document.createElement("div"); STORAGE_SETTINGS.classList.add("storage-settings"); STORAGE_SETTINGS.appendChild(STORAGE_FRAGMENT); STORAGE_SETTINGS.appendChild(STORAGE_LOCALSTORAGE); var RELOAD_BUTTON = document.createElement("button"); RELOAD_BUTTON.classList.add("reload"); RELOAD_BUTTON.onclick = function (e) { return window.location.reload(); }; ;// CONCATENATED MODULE: ./src/ui/index.ts function initialiseUI() { document.body.appendChild(ADD_MODAL); document.body.appendChild(ADD_BUTTON); document.body.appendChild(TASK_PEN); document.body.appendChild(STORAGE_SETTINGS); document.body.appendChild(RELOAD_BUTTON); } ;// CONCATENATED MODULE: ./src/index.ts window.rodeo = { initialise: function initialise() { initialiseUI(); loadCurrentTasks(); reRenderCurrentTasks(); } // current: CURRENT_TASKS, }; /******/ })() ;