{"version":3,"sources":["webpack:///webpack/bootstrap df4cc83188dc21ec465f","webpack:///./src/app.ts","webpack:///./node_modules/view-model/ViewModel.js","webpack:///./node_modules/event-router/EventRouter.js","webpack:///./node_modules/copy-object-graph/index.js","webpack:///./src/models/Note.ts","webpack:///./node_modules/storage-manager/index.js","webpack:///./src/lib/generateUUID.js","webpack:///./src/views/Toolbar.ts","webpack:///./src/views/Detail.ts","webpack:///./src/views/List.ts"],"names":[],"mappings":";AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;;;AC7DA,yCAAyC;AACzC,sCAAiC;AACjC,yCAAsC;AACtC,wCAAoC;AACpC,sCAAgC;AAEhC,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AACpC,MAAM,UAAU,GAAG,cAAI,CAAC,WAAW,CAAC,CAAC;AAErC,IAAI,YAAY,GAAG,UAAU,CAAC;AAC9B,IAAI,WAAW,GAAG,SAAS,CAAC;AAE5B,iBAAO,CAAC,YAAY,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AAC/C,gBAAM,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AAC7C,cAAI,CAAC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;;;;;;;;ACdzD;AACA;;AAEA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;ACtGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,C;;;;;;AChHA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gC;;;;;;;;;AC7BA,qCAAyC;AACzC,4CAAqD;AAGrD,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;AAUpC,cAA6B,GAAwB;IACnD,MAAM,MAAM,GAAG,MAAM,CAAC;IAEtB,MAAM,KAAK,GAA0B,EAAE,CAAC;IACxC,CAAC;QACC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9B,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC;YAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,KAAK,GAAS;QAClB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,EAAE;QACR,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,IAAI;KACf,CAAC;IAEF,GAAG,CAAC,MAAM,CAAC,MAAM,E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","file":"./dist/app.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap df4cc83188dc21ec465f","import ViewModel = require('view-model');\nimport Note from './models/Note';\nimport Toolbar from './views/Toolbar';\nimport Detail from './views/Detail';\nimport List from './views/List';\n\nconst MyViewModel = ViewModel(true);\nconst model_name = Note(MyViewModel);\n\nlet toolbar_name = 'toolbar_';\nlet detail_name = 'detail_';\n\nToolbar(toolbar_name, model_name, MyViewModel);\nDetail(detail_name, model_name, MyViewModel);\nList(toolbar_name, detail_name, model_name, MyViewModel);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app.ts","'use strict'\nconst EventRouter = require('event-router')\n\nmodule.exports = function ViewModel(shouldLogEvents) {\n const R = EventRouter(shouldLogEvents) // router\n const M = {} // models\n\n // closure over model key\n const modelInstance = (_key) => {\n return {\n // The name of this model\n name: _key,\n // Emit an event on this model\n emit(name, data) {\n R.emit(_key, name, data)\n }\n }\n }\n\n return Object.freeze({\n // Create a new model\n create(key, extend_members) {\n let model = M[key]\n if (model !== undefined) return false\n\n model = M[key] = Object.create(null)\n model.instance = modelInstance(key)\n model.listeners = new WeakMap() // for mapping listener to it's model-bound copy\n Object.freeze(Object.assign(model.instance, extend_members))\n\n return true\n },\n // Run a function inside of a model\n run(key, funcToRun, ...args) {\n const model = M[key]\n if (model === undefined) return false\n\n funcToRun.apply(model.instance, args)\n return true\n },\n // Check if a model exists\n exists(key) {\n if (M[key] === undefined) return false\n return true\n },\n // Delete an existing model and all event listeners of that model\n destroy(key) {\n if (M[key] === undefined) return false\n\n R.purge(key)\n delete M[key]\n\n return true\n },\n // Add event listeners to this model\n add(key, methods) {\n const results = {}\n const model = M[key]\n if (model === undefined) return false\n\n for (let name in methods) {\n let method = methods[name]\n let boundMethod\n if (typeof method !== 'function') {\n results[name] = false\n continue\n }\n if (model.listeners.has(method)) {\n boundMethod = model.listeners.get(method)\n } else {\n boundMethod = method.bind(model.instance)\n model.listeners.set(method, boundMethod)\n }\n results[name] = R.add(key, name, boundMethod)\n }\n\n return results\n },\n // Remove event listeners from this model\n remove(key, methods) {\n const results = {}\n const model = M[key]\n if (model === undefined) return false\n\n for (let name in methods) {\n let method = methods[name]\n\n if (typeof method !== 'function') {\n results[name] = false\n continue\n }\n if (model.listeners.has(method)) {\n results[name] = R.remove(key, name, model.listeners.get(method))\n }\n }\n\n return results\n },\n getModelNames() {\n return Object.keys(M)\n }\n })\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/view-model/ViewModel.js\n// module id = 1\n// module chunks = 0","'use strict'\nconst copyObjectGraph = require('copy-object-graph')\nconst myName = 'EventRouter'\n\nfunction EventRouter(shouldLogCalls) {\n const events = Object.create(null)\n\n var public_interface = {\n getEvents() {\n return copyObjectGraph(events)\n },\n\n add(type, key, callback) {\n return _add(type, key, callback, events)\n },\n\n remove(type, key, callback) {\n return _remove(type, key, callback, events)\n },\n\n emit(type, key, data) {\n return _emit(type, key, data, events)\n },\n\n purge(type) {\n return _purge(type, events)\n }\n }\n\n if (shouldLogCalls) { // add logging proxy\n for (let method_name in public_interface) {\n public_interface[method_name] = closure(method_name, public_interface[method_name])\n }\n console.info(myName, 'is logging calls')\n }\n function closure(method_name, method) {\n return function(...args) {\n console.info(myName, method_name, args[0], args[1])\n return method.apply(null, args)\n }\n }\n\n return Object.freeze(public_interface)\n}\n\nmodule.exports = EventRouter\n/////////////////////////////////////////////////////\n/*\n t = type\n k = key\n d = data\n o = object\n cb = callback\n*/\nfunction _purge(t, o) {\n delete o[t]\n}\nfunction _emit(t, k, d, o) {\n var ot = o[t]\n if (ot === undefined) {\n console.warn(myName, 'event type', t, k, 'was just fired but there are no registered callbacks')\n return false\n }\n var otk = ot[k]\n if (otk === undefined) {\n console.warn(myName, 'event type', t, k, 'was just fired but there are no registered callbacks')\n return false\n }\n\n for (let cb of otk) cb(d)\n\n return true\n}\nfunction _add(t, k, cb, o) {\n var ot = o[t]\n if (ot === undefined) ot = o[t] = {}\n\n var otk = ot[k]\n if (otk === undefined) otk = ot[k] = []\n\n if (otk.includes(cb)) {\n console.warn(myName, 'event type', t, k, 'already has this callback function')\n return false\n }\n else otk.push(cb)\n\n return true\n}\nfunction _remove(t, k, cb, o) {\n var ot = o[t]\n if (ot === undefined) {\n console.warn(myName, 'cannot find type', t)\n return false\n }\n var otk = ot[k]\n if (otk === undefined) {\n console.warn(myName, 'cannot find key', k, 'in type', t)\n return false\n }\n if (!otk.includes(cb)) {\n console.warn(myName, 'cannot find this callback function under key', k, 'in type', t)\n return false\n }\n\n otk.splice(otk.indexOf(cb), 1)\n\n if (!otk.length) {\n delete ot[k]\n if (!Object.keys(ot).length) delete o[t]\n }\n\n return true\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/event-router/EventRouter.js\n// module id = 2\n// module chunks = 0","/*\n Copy Object Graphs\n Source: https://github.com/thurt/copy-object-graph\n Supports: nested/self-referencing objects, nested/self-referencing arrays, numbers, strings, null undefined\n*/\nfunction copyObjectGraph(obj) {\n if (typeof WeakMap !== 'function') throw new ReferenceError('copyObjectGraph requires WeakMap')\n\n var _pool = new WeakMap()\n return cpObj(obj)\n\n function cpObj(obj) {\n var cp\n if (typeof obj !== 'object') return obj\n if (obj === null) return null\n if (_pool.has(obj)) return _pool.get(obj) // for self-references\n\n if (Array.isArray(obj)) cp = obj.slice()\n else cp = Object.assign({}, obj)\n\n _pool.set(obj, cp)\n return cpProps(cp)\n }\n function cpProps(cp) {\n for (var prop in cp) cp[prop] = cpObj(cp[prop])\n return cp\n }\n}\n\nmodule.exports = copyObjectGraph\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/copy-object-graph/index.js\n// module id = 3\n// module chunks = 0","import * as store from 'storage-manager';\nimport generateUUID = require('../lib/generateUUID');\nimport ViewModel = require('view-model');\n\nconst STORE = store('localStorage');\n\ntype Note = {\n [prop: string]: string;\n title: string;\n body: string;\n created: string;\n modified: string;\n};\n\nexport default function Note(app: ViewModel.Interface): string {\n const myName = 'Note';\n\n const NOTES: {[key: string]: Note} = {};\n {\n const _NOTES = STORE.getAll();\n for (let key in _NOTES) NOTES[key] = JSON.parse(_NOTES[key]);\n }\n\n const blank: Note = {\n title: '',\n body: '',\n created: null,\n modified: null,\n };\n\n app.create(myName, {\n new() {\n const key = generateUUID();\n blank.created = blank.modified = new Date().toString();\n\n STORE.set(key, blank);\n NOTES[key] = Object.assign({}, blank);\n\n this.emit('new', key);\n },\n get(key, prop) {\n const nk = NOTES[key];\n if (nk === undefined)\n return console.warn(this.name, 'key', key, 'does not exist');\n const nkp = nk[prop];\n if (nkp === undefined)\n return console.warn(\n this.name,\n 'property',\n prop,\n 'for key',\n key,\n 'does not exist',\n );\n if (typeof nkp === 'object' && nkp !== null)\n return console.warn(\n this.name,\n 'property',\n prop,\n 'for key',\n key,\n 'is an object. Only primitives can be accessed.',\n );\n\n return nkp;\n },\n getKeys() {\n return Object.keys(NOTES);\n },\n update(key, obj) {\n let changed = false;\n const nk = NOTES[key];\n if (nk === undefined)\n return console.warn(this.name, 'key', key, 'does not exist');\n for (let prop in obj) {\n let nkp = nk[prop];\n if (nkp === undefined) {\n console.warn(\n this.name,\n 'property',\n prop,\n 'for key',\n key,\n 'does not exist',\n );\n continue;\n }\n if (nkp !== obj[prop]) {\n nk[prop] = obj[prop];\n this.emit('update_' + prop, key);\n changed = true;\n }\n }\n if (changed) {\n NOTES[key].modified = Date().toString();\n this.emit('update_modified', key);\n STORE.set(key, NOTES[key]);\n }\n },\n delete(key) {\n delete NOTES[key];\n STORE.remove(key);\n this.emit('delete', key);\n },\n });\n\n return myName;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/models/Note.ts","'use strict'\nfunction StorageManager(type) {\n if (type !== 'localStorage' && type !== 'sessionStorage') throw new ReferenceError(`StorageManager does not support storage type ${type}`)\n\n const myStore = window[type]\n\n return {\n get(key) {\n var item = myStore.getItem(key)\n if (item !== null) return item\n return false\n },\n getAll() {\n var key = ''\n var map = {}\n var item = null\n for (var i = 0; i < myStore.length; i++) {\n key = myStore.key(i)\n if (~key.indexOf('_')) continue\n item = myStore.getItem(key)\n map[key] = item\n }\n return map\n },\n set(key, obj) {\n try {\n var data\n if (typeof obj !== 'string') data = JSON.stringify(obj)\n else data = obj\n\n myStore.setItem(key, data)\n return true\n }\n catch(e) {\n console.error(e)\n return false\n }\n },\n remove(key) {\n var item = myStore.getItem(key)\n if (item === null) return false\n myStore.removeItem(key)\n return true\n },\n length() {\n return myStore.length\n },\n clear() {\n myStore.clear()\n }\n }\n}\n\nmodule.exports = StorageManager\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/storage-manager/index.js\n// module id = 5\n// module chunks = 0","// Source: http://stackoverflow.com/a/8809472\nmodule.exports = function() {\n var d = new Date().getTime()\n if (window.performance && typeof window.performance.now === \"function\") {\n d += window.performance.now() //use high-precision timer if available\n }\n var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (d + Math.random() * 16) % 16 | 0\n d = Math.floor(d / 16)\n return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16)\n })\n return uuid\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/lib/generateUUID.js\n// module id = 6\n// module chunks = 0","import ViewModel = require('view-model');\n\nexport default function Toolbar(\n myName: string,\n myModel: string,\n app: ViewModel.Interface,\n) {\n const myView = document.getElementById('Toolbar');\n const myData = Object.create(null);\n // fill myData\n for (\n let i = 0,\n els: NodeListOf = myView.querySelectorAll('[data-name]');\n i < els.length;\n i++\n ) {\n myData[els[i].dataset.name] = els[i];\n }\n\n function click(e: Event) {\n e.stopPropagation();\n app.run(myModel, _click, e.target);\n }\n\n function _click(target: HTMLElement) {\n const name = target.dataset.name;\n if (name !== 'delete') return this.emit(myName + name);\n if (window.confirm(`Are you sure you want to delete this ${myModel} ?`)) {\n this.emit(myName + name);\n }\n }\n\n myView.addEventListener('click', click, true);\n\n app.add(myModel, {\n [myName + 'disableButton'](btn_name) {\n const btn = myData[btn_name];\n if (btn !== undefined) btn.disabled = true;\n else console.warn('Cannot find button by name', btn_name);\n },\n [myName + 'enableButton'](btn_name) {\n const btn = myData[btn_name];\n if (btn !== undefined) btn.disabled = false;\n else console.warn('Cannot find button by name', btn_name);\n },\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/views/Toolbar.ts","import ViewModel = require('view-model');\n\nexport default function Detail(\n myName: string,\n myModel: string,\n app: ViewModel.Interface,\n) {\n const myView = document.getElementById('Detail');\n const myData = Object.create(null);\n const myEmpty = document.getElementById('Empty');\n\n // fill myData\n for (\n let i = 0,\n els: NodeListOf = myView.querySelectorAll('[data-name]');\n i < els.length;\n i++\n ) {\n let e = els[i];\n myData[e.dataset.name] = e;\n }\n\n let myKey: string = null;\n\n function input(e: Event) {\n e.stopPropagation();\n app.run(myModel, _input, e.target);\n }\n\n function _input(target: HTMLElement) {\n switch (target.dataset.name) {\n case 'title':\n this.update(myKey, {[target.dataset.name]: target.innerText});\n break;\n case 'body':\n this.update(myKey, {[target.dataset.name]: target.innerHTML});\n break;\n default:\n console.warn(\n myName,\n ': this view-model does not recognize dataset name',\n target.dataset.name,\n );\n break;\n }\n }\n\n myView.addEventListener('input', input, true);\n myData['title'].addEventListener('keydown', function(e: KeyboardEvent) {\n if (e.keyCode === 13) {\n // enter\n e.preventDefault();\n }\n });\n\n function clearSelections() {\n Object.keys(myData).forEach(key => myData[key].blur());\n window.getSelection().removeAllRanges();\n }\n\n app.add(myModel, {\n update_modified(key) {\n if (myKey !== key) return;\n myData['modified'].textContent =\n 'Modified: ' + this.get(myKey, 'modified');\n },\n [myName + 'set'](key) {\n clearSelections();\n myKey = key;\n for (let name in myData) {\n let value = this.get(myKey, name);\n if (name === 'created' || name === 'modified') {\n value = name.charAt(0).toUpperCase() + name.slice(1) + ': ' + value;\n }\n myData[name].innerHTML = value;\n }\n\n if (myView.classList.contains('hidden')) {\n myView.classList.remove('hidden');\n myEmpty.classList.add('hidden');\n }\n },\n [myName + 'clear']() {\n if (myView.classList.contains('hidden')) return;\n myView.classList.add('hidden');\n myEmpty.classList.remove('hidden');\n myKey = null;\n clearSelections();\n },\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/views/Detail.ts","import ViewModel = require('view-model');\n\nexport default function List(\n myToolbar: string,\n myDetail: string,\n myModel: string,\n app: ViewModel.Interface,\n) {\n const myView = document.getElementById('List');\n const myKeys = new WeakMap();\n\n let open_el: HTMLElement = null;\n let auto_open = false;\n\n function click(e: Event) {\n e.stopPropagation();\n app.run(myModel, _click, e.target);\n }\n function _click(target: HTMLElement) {\n if (!open(target)) return;\n\n this.emit(myToolbar + 'enableButton', 'delete');\n this.emit(myDetail + 'set', myKeys.get(open_el));\n }\n function open(target: HTMLElement) {\n if (open_el) {\n if (open_el === target) return false; // target is already open\n open_el.classList.remove('active');\n }\n open_el = target;\n open_el.classList.add('active');\n return true; // opened target\n }\n\n function checkForEmptyTitle(title: string) {\n if (title === '') {\n return '';\n } else {\n return title;\n }\n }\n\n myView.addEventListener('click', click, true);\n\n app.add(myModel, {\n new(key) {\n const title = checkForEmptyTitle(this.get(key, 'title'));\n const btn = document.createElement('button');\n btn.textContent = title;\n btn.setAttribute('title', title);\n btn.classList.add('btn');\n btn.classList.add('btn-default');\n myKeys.set(btn, key);\n myView.insertBefore(btn, myView.childNodes[0]);\n\n if (auto_open) {\n auto_open = false;\n _click.call(this, btn);\n }\n },\n update_title(key) {\n const title = checkForEmptyTitle(this.get(key, 'title'));\n open_el.innerText = title;\n open_el.setAttribute('title', title);\n },\n delete(key) {\n const next_sibling = open_el.nextElementSibling;\n open_el.remove();\n open_el = null;\n if (next_sibling === null) {\n this.emit(myToolbar + 'disableButton', 'delete');\n this.emit(myDetail + 'clear');\n } else {\n app.run(myModel, _click, next_sibling);\n }\n },\n [myToolbar + 'delete']() {\n this.delete(myKeys.get(open_el));\n },\n [myToolbar + 'new']() {\n auto_open = true;\n this.new();\n },\n });\n\n // Fill List with existing items\n app.run(myModel, function() {\n this.getKeys()\n .sort((a: string, b: string) => {\n // sort by created date descending\n const a_created = Date.parse(this.get(a, 'created'));\n const b_created = Date.parse(this.get(b, 'created'));\n return a_created > b_created;\n })\n .forEach((key: string) => this.emit('new', key));\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/views/List.ts"],"sourceRoot":""}