{"version":3,"sources":["node_modules/hyperapp/src/index.js","src/utils.js","src/actions.js","src/state.js","src/views/header.js","src/views/calendar.js","src/views/editor.js","src/views/index.js","src/app.js"],"names":["h","name","attributes","length","rest","children","arguments","push","node","pop","nodeName","key","app","state","actions","view","container","map","skipRender","rootElement","oldNode","recycleElement","element","toLowerCase","call","childNodes","nodeType","nodeValue","lifecycle","isRecycling","globalState","clone","wiredActions","wireStateToActions","path","action","data","result","getPartialState","then","scheduleRender","setPartialState","concat","resolveNode","render","patch","parent","isSvg","newElement","createElement","document","createTextNode","createElementNS","oncreate","i","appendChild","updateAttribute","insertBefore","removeElement","updateElement","oldAttributes","cb","onupdate","oldKeyed","newKeyed","oldElements","oldChildren","oldKey","getKey","k","newKey","keyedNode","setTimeout","target","source","out","value","slice","eventListener","event","currentTarget","events","type","oldValue","style","setProperty","addEventListener","removeEventListener","setAttribute","removeAttribute","done","removeChild","removeChildren","ondestroy","onremove","getFirstDay","year","month","n","Date","getDay","getDaysInMonth","getDate","getNextMonth","d","getPrevMonth","getMonthTitle","getData","id","localStorage","getItem","JSON","parse","setData","setItem","stringify","remoteData","removeItem","hasData","getToday","getFullYear","getMonth","day","nav","visible","utils","calendar","today","renderCalender","renderEditor","hideEditor","showToday","firstDay","days","showForm","editor","showDeleteList","deleteId","setName","formData","start","setStartTime","createEvent","trim","selectDelete","e","options","selectedIndex","deleteEvents","newEvents","filter","TitleItem","PrevButton","NextButton","dayClass","date","DayItem","repeat","iteratee","Array","DeleteEventsList","srcElement","sorter","a","b","aStart","replace","EventList","sort","EmptyListItem","CreateEventButton","DeleteEventsButton","EventListItem","CreateEventForm","NameInput","StartTimeInput","CancelButton","ConfirmButton","ConfirmDeleteButton","body"],"mappings":"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","file":"app.92d97a50.map","sourceRoot":"..","sourcesContent":["export function h(name, attributes) {\n  var rest = []\n  var children = []\n  var length = arguments.length\n\n  while (length-- > 2) rest.push(arguments[length])\n\n  while (rest.length) {\n    var node = rest.pop()\n    if (node && node.pop) {\n      for (length = node.length; length--; ) {\n        rest.push(node[length])\n      }\n    } else if (node != null && node !== true && node !== false) {\n      children.push(node)\n    }\n  }\n\n  return typeof name === \"function\"\n    ? name(attributes || {}, children)\n    : {\n        nodeName: name,\n        attributes: attributes || {},\n        children: children,\n        key: attributes && attributes.key\n      }\n}\n\nexport function app(state, actions, view, container) {\n  var map = [].map\n  var rootElement = (container && container.children[0]) || null\n  var oldNode = rootElement && recycleElement(rootElement)\n  var lifecycle = []\n  var skipRender\n  var isRecycling = true\n  var globalState = clone(state)\n  var wiredActions = wireStateToActions([], globalState, clone(actions))\n\n  scheduleRender()\n\n  return wiredActions\n\n  function recycleElement(element) {\n    return {\n      nodeName: element.nodeName.toLowerCase(),\n      attributes: {},\n      children: map.call(element.childNodes, function(element) {\n        return element.nodeType === 3 // Node.TEXT_NODE\n          ? element.nodeValue\n          : recycleElement(element)\n      })\n    }\n  }\n\n  function resolveNode(node) {\n    return typeof node === \"function\"\n      ? resolveNode(node(globalState, wiredActions))\n      : node != null\n        ? node\n        : \"\"\n  }\n\n  function render() {\n    skipRender = !skipRender\n\n    var node = resolveNode(view)\n\n    if (container && !skipRender) {\n      rootElement = patch(container, rootElement, oldNode, (oldNode = node))\n    }\n\n    isRecycling = false\n\n    while (lifecycle.length) lifecycle.pop()()\n  }\n\n  function scheduleRender() {\n    if (!skipRender) {\n      skipRender = true\n      setTimeout(render)\n    }\n  }\n\n  function clone(target, source) {\n    var out = {}\n\n    for (var i in target) out[i] = target[i]\n    for (var i in source) out[i] = source[i]\n\n    return out\n  }\n\n  function setPartialState(path, value, source) {\n    var target = {}\n    if (path.length) {\n      target[path[0]] =\n        path.length > 1\n          ? setPartialState(path.slice(1), value, source[path[0]])\n          : value\n      return clone(source, target)\n    }\n    return value\n  }\n\n  function getPartialState(path, source) {\n    var i = 0\n    while (i < path.length) {\n      source = source[path[i++]]\n    }\n    return source\n  }\n\n  function wireStateToActions(path, state, actions) {\n    for (var key in actions) {\n      typeof actions[key] === \"function\"\n        ? (function(key, action) {\n            actions[key] = function(data) {\n              var result = action(data)\n\n              if (typeof result === \"function\") {\n                result = result(getPartialState(path, globalState), actions)\n              }\n\n              if (\n                result &&\n                result !== (state = getPartialState(path, globalState)) &&\n                !result.then // !isPromise\n              ) {\n                scheduleRender(\n                  (globalState = setPartialState(\n                    path,\n                    clone(state, result),\n                    globalState\n                  ))\n                )\n              }\n\n              return result\n            }\n          })(key, actions[key])\n        : wireStateToActions(\n            path.concat(key),\n            (state[key] = clone(state[key])),\n            (actions[key] = clone(actions[key]))\n          )\n    }\n\n    return actions\n  }\n\n  function getKey(node) {\n    return node ? node.key : null\n  }\n\n  function eventListener(event) {\n    return event.currentTarget.events[event.type](event)\n  }\n\n  function updateAttribute(element, name, value, oldValue, isSvg) {\n    if (name === \"key\") {\n    } else if (name === \"style\") {\n      for (var i in clone(oldValue, value)) {\n        var style = value == null || value[i] == null ? \"\" : value[i]\n        if (i[0] === \"-\") {\n          element[name].setProperty(i, style)\n        } else {\n          element[name][i] = style\n        }\n      }\n    } else {\n      if (name[0] === \"o\" && name[1] === \"n\") {\n        name = name.slice(2)\n\n        if (element.events) {\n          if (!oldValue) oldValue = element.events[name]\n        } else {\n          element.events = {}\n        }\n\n        element.events[name] = value\n\n        if (value) {\n          if (!oldValue) {\n            element.addEventListener(name, eventListener)\n          }\n        } else {\n          element.removeEventListener(name, eventListener)\n        }\n      } else if (name in element && name !== \"list\" && !isSvg) {\n        element[name] = value == null ? \"\" : value\n      } else if (value != null && value !== false) {\n        element.setAttribute(name, value)\n      }\n\n      if (value == null || value === false) {\n        element.removeAttribute(name)\n      }\n    }\n  }\n\n  function createElement(node, isSvg) {\n    var element =\n      typeof node === \"string\" || typeof node === \"number\"\n        ? document.createTextNode(node)\n        : (isSvg = isSvg || node.nodeName === \"svg\")\n          ? document.createElementNS(\n              \"http://www.w3.org/2000/svg\",\n              node.nodeName\n            )\n          : document.createElement(node.nodeName)\n\n    var attributes = node.attributes\n    if (attributes) {\n      if (attributes.oncreate) {\n        lifecycle.push(function() {\n          attributes.oncreate(element)\n        })\n      }\n\n      for (var i = 0; i < node.children.length; i++) {\n        element.appendChild(\n          createElement(\n            (node.children[i] = resolveNode(node.children[i])),\n            isSvg\n          )\n        )\n      }\n\n      for (var name in attributes) {\n        updateAttribute(element, name, attributes[name], null, isSvg)\n      }\n    }\n\n    return element\n  }\n\n  function updateElement(element, oldAttributes, attributes, isSvg) {\n    for (var name in clone(oldAttributes, attributes)) {\n      if (\n        attributes[name] !==\n        (name === \"value\" || name === \"checked\"\n          ? element[name]\n          : oldAttributes[name])\n      ) {\n        updateAttribute(\n          element,\n          name,\n          attributes[name],\n          oldAttributes[name],\n          isSvg\n        )\n      }\n    }\n\n    var cb = isRecycling ? attributes.oncreate : attributes.onupdate\n    if (cb) {\n      lifecycle.push(function() {\n        cb(element, oldAttributes)\n      })\n    }\n  }\n\n  function removeChildren(element, node) {\n    var attributes = node.attributes\n    if (attributes) {\n      for (var i = 0; i < node.children.length; i++) {\n        removeChildren(element.childNodes[i], node.children[i])\n      }\n\n      if (attributes.ondestroy) {\n        attributes.ondestroy(element)\n      }\n    }\n    return element\n  }\n\n  function removeElement(parent, element, node) {\n    function done() {\n      parent.removeChild(removeChildren(element, node))\n    }\n\n    var cb = node.attributes && node.attributes.onremove\n    if (cb) {\n      cb(element, done)\n    } else {\n      done()\n    }\n  }\n\n  function patch(parent, element, oldNode, node, isSvg) {\n    if (node === oldNode) {\n    } else if (oldNode == null || oldNode.nodeName !== node.nodeName) {\n      var newElement = createElement(node, isSvg)\n      parent.insertBefore(newElement, element)\n\n      if (oldNode != null) {\n        removeElement(parent, element, oldNode)\n      }\n\n      element = newElement\n    } else if (oldNode.nodeName == null) {\n      element.nodeValue = node\n    } else {\n      updateElement(\n        element,\n        oldNode.attributes,\n        node.attributes,\n        (isSvg = isSvg || node.nodeName === \"svg\")\n      )\n\n      var oldKeyed = {}\n      var newKeyed = {}\n      var oldElements = []\n      var oldChildren = oldNode.children\n      var children = node.children\n\n      for (var i = 0; i < oldChildren.length; i++) {\n        oldElements[i] = element.childNodes[i]\n\n        var oldKey = getKey(oldChildren[i])\n        if (oldKey != null) {\n          oldKeyed[oldKey] = [oldElements[i], oldChildren[i]]\n        }\n      }\n\n      var i = 0\n      var k = 0\n\n      while (k < children.length) {\n        var oldKey = getKey(oldChildren[i])\n        var newKey = getKey((children[k] = resolveNode(children[k])))\n\n        if (newKeyed[oldKey]) {\n          i++\n          continue\n        }\n\n        if (newKey != null && newKey === getKey(oldChildren[i + 1])) {\n          if (oldKey == null) {\n            removeElement(element, oldElements[i], oldChildren[i])\n          }\n          i++\n          continue\n        }\n\n        if (newKey == null || isRecycling) {\n          if (oldKey == null) {\n            patch(element, oldElements[i], oldChildren[i], children[k], isSvg)\n            k++\n          }\n          i++\n        } else {\n          var keyedNode = oldKeyed[newKey] || []\n\n          if (oldKey === newKey) {\n            patch(element, keyedNode[0], keyedNode[1], children[k], isSvg)\n            i++\n          } else if (keyedNode[0]) {\n            patch(\n              element,\n              element.insertBefore(keyedNode[0], oldElements[i]),\n              keyedNode[1],\n              children[k],\n              isSvg\n            )\n          } else {\n            patch(element, oldElements[i], null, children[k], isSvg)\n          }\n\n          newKeyed[newKey] = children[k]\n          k++\n        }\n      }\n\n      while (i < oldChildren.length) {\n        if (getKey(oldChildren[i]) == null) {\n          removeElement(element, oldElements[i], oldChildren[i])\n        }\n        i++\n      }\n\n      for (var i in oldKeyed) {\n        if (!newKeyed[i]) {\n          removeElement(element, oldKeyed[i][0], oldKeyed[i][1])\n        }\n      }\n    }\n    return element\n  }\n}\n","export default {\n\n  getFirstDay: (year, month) => {\n    const n = new Date(year, month - 1, 1).getDay();\n\n    return (n === 0) ? 7 : n;\n  },\n\n  getDaysInMonth: (year, month) => new Date(year, month, 0).getDate(),\n\n  getNextMonth: d => ({\n    year: (d.month < 12) ? d.year : d.year + 1,\n    month: (d.month < 12) ? d.month + 1 : 1,\n  }),\n\n  getPrevMonth: d => ({\n    year: (d.month > 1) ? d.year : d.year - 1,\n    month: (d.month > 1) ? d.month - 1 : 12,\n  }),\n\n\n  getMonthTitle: d => `${d.month} / ${d.year}`,\n\n  getData: id => ((localStorage.getItem(id))\n    ? JSON.parse(localStorage.getItem(id))\n    : []),\n\n  setData: (key, events) => localStorage.setItem(key, JSON.stringify(events)),\n\n  remoteData: key => localStorage.removeItem(key),\n\n  hasData: id => (!!(localStorage.getItem(id))),\n\n  getToday: () => {\n    const d = new Date();\n\n    const year = d.getFullYear();\n    const month = d.getMonth() + 1;\n    const day = d.getDate();\n    const id = `${year}-${month}-${day}`;\n\n    return {\n      year,\n      month,\n      day,\n      id,\n    };\n  },\n\n};\n","import utils from './utils';\n\nexport default {\n  nav: value => (state, actions) => {\n    let visible = {};\n\n    if (value === 'next') {\n      visible = utils.getNextMonth(state.calendar);\n    } else if (value === 'prev') {\n      visible = utils.getPrevMonth(state.calendar);\n    }\n\n    const today = utils.getToday();\n\n    actions.renderCalender(visible);\n\n    if (today.year === visible.year && today.month === visible.month) {\n      return actions.renderEditor(today);\n    }\n\n    return actions.hideEditor();\n  },\n\n  showToday: () => (state, actions) => {\n    const today = utils.getToday();\n    actions.renderCalender(today);\n    actions.renderEditor(today);\n  },\n\n  renderCalender: ({ year, month }) => () => ({\n    calendar: {\n      year,\n      month,\n      firstDay: utils.getFirstDay(year, month),\n      days: utils.getDaysInMonth(year, month),\n    },\n    showForm: false,\n  }),\n\n  hideEditor: () => () => ({\n    editor: { id: false },\n    events: [],\n  }),\n\n  renderEditor: value => () => ({\n    editor: value,\n    events: utils.getData(value.id),\n    showForm: false,\n    showDeleteList: false,\n    deleteId: null,\n  }),\n\n  showForm: () => () => ({\n    showForm: true,\n  }),\n\n  setName: value => state => ({\n    formData: { name: value, start: state.formData.start },\n  }),\n\n  setStartTime: value => state => ({\n    formData: { name: state.formData.name, start: value },\n  }),\n\n  createEvent: key => ({ formData }) => {\n    const { name, start } = formData;\n\n    if (name.trim().length < 1) return null;\n\n    const events = utils.getData(key).concat({ name, start });\n\n    utils.setData(key, events);\n\n    return {\n      events,\n      formData: { name: '', start: '' },\n      showForm: false,\n    };\n  },\n\n  showDeleteList: () => () => ({\n    showDeleteList: true,\n  }),\n\n  selectDelete: e => () => ({\n    deleteId: +e.options[e.selectedIndex].value,\n  }),\n\n  deleteEvents: key => ({ events, deleteId }) => {\n    if (deleteId === null) {\n      return null;\n    }\n\n    const newEvents = events.filter((e, i) => i !== deleteId);\n\n    if (newEvents.length > 0) {\n      utils.setData(key, newEvents);\n    } else {\n      utils.remoteData(key);\n    }\n\n    return {\n      events: newEvents,\n      showDeleteList: false,\n    };\n  },\n};\n","import utils from './utils';\n\nconst {\n  year,\n  month,\n  day,\n  id,\n} = utils.getToday();\n\nconst firstDay = utils.getFirstDay(year, month);\nconst days = utils.getDaysInMonth(year, month);\n\nexport default {\n  calendar: {\n    year,\n    month,\n    firstDay,\n    days,\n  },\n\n  editor: {\n    year,\n    month,\n    day,\n    id,\n  },\n\n  events: utils.getData(id),\n\n  showForm: false,\n\n  showDeleteList: false,\n\n  deleteId: null,\n\n  formData: {\n    name: '',\n    start: '',\n  },\n};\n","import { h } from 'hyperapp';\n\nexport default ({ year, month }) => (\n  <div class='header'>\n    <PrevButton />\n    <TitleItem year={year} month={month} />\n    <NextButton />\n  </div>\n);\n\nconst TitleItem = ({ year, month }) => (state, { showToday }) => (\n  <div class='title' onclick={() => showToday()}>\n    <h1>\n      {month} / {year}\n    </h1>\n  </div>\n);\n\nconst PrevButton = () => (state, { nav }) => (\n  <div class='button prev-button' onclick={() => nav('prev')}>\n    «\n  </div>\n);\n\nconst NextButton = () => (state, { nav }) => (\n  <div class='button next-button' onclick={() => nav('next')}>\n    »\n  </div>\n);\n","import { h } from 'hyperapp';\nimport utils from '../utils';\n\nconst dayClass = (date, editor) => {\n  let result = 'day';\n\n  if (date.id === editor.id) result += ' editing';\n\n  if (utils.hasData(date.id)) result += ' has';\n\n  return result;\n};\n\nconst DayItem = ({ date }) => (state, actions) => (\n  <div class={dayClass(date, state.editor)} onclick={() => actions.renderEditor(date)}>\n    {date.day}\n  </div>\n);\n\nconst repeat = (length, iteratee) => {\n  const out = new Array(length);\n\n  for (let i = 0; i < length; i++) {\n    out[i] = iteratee(i + 1);\n  }\n\n  return out;\n};\n\nexport default ({\n  year,\n  month,\n  firstDay,\n  days,\n}) => (\n  <div class='calendar' data-id={`${year}-${month}`}>\n    <div class='table'>\n      {repeat(firstDay - 1, () =>\n        <div class='empty'></div>)\n      }\n      {repeat(days, i =>\n        <DayItem\n          date={{\n            year,\n            month,\n            day: i,\n            id: `${year}-${month}-${i}`,\n          }}\n        />)\n      }\n    </div>\n  </div>\n);\n","import { h } from 'hyperapp';\n\nexport default () => ({ showForm, showDeleteList }) => {\n  if (showForm) {\n    return (\n      <div class='editor'>\n        <CreateEventForm />\n      </div>\n    );\n  } else if (showDeleteList) {\n    return (\n      <div class='editor'>\n        <DeleteEventsList />\n      </div>\n    );\n  }\n\n  return (\n    <div class='editor'>\n      <EventList />\n    </div>\n  );\n};\n\nconst DeleteEventsList = () => ({ events, editor }, { selectDelete }) => (\n  <div class='event-list'>\n    <div class='delete-disclaimer'>\n      If you are sure, select the name of the event you want to remove.\n    </div>\n\n    <div>\n      <select onchange={e => selectDelete(e.srcElement)}>\n        <option selected disabled>Choose one</option>\n        {events.map(({ name, start }, i) => {\n          if (start) {\n            return (\n              <option value={i}>{start} - {name}</option>\n            );\n          }\n          return (\n            <option value={i}>{name}</option>\n          );\n        })}\n      </select>\n    </div>\n\n    <div class='buttons'>\n      <CancelButton editor={editor} />\n      <ConfirmDeleteButton id={editor.id} />\n    </div>\n  </div>\n);\n\nconst sorter = (a, b) => {\n  const aStart = +a.start.replace(/\\D/g, '');\n  const bStart = +b.start.replace(/\\D/g, '');\n\n  return aStart - bStart;\n};\n\nconst EventList = () => ({ events, editor }) => (\n  <div class='event-list'>\n    {events.sort(sorter).map(({ name, start }) => (\n      <EventListItem name={name} start={start} />\n    ))}\n    {events.length < 1 &&\n      <EmptyListItem />\n    }\n    {editor.id &&\n      <div class='buttons'>\n        <DeleteEventsButton />\n        <CreateEventButton />\n      </div>\n    }\n  </div>\n);\n\nconst EmptyListItem = () => ({ editor }) => {\n  if (editor.id) {\n    return (\n      <div class='empty-list-item'>\n        <p>\n          Seem like there is nothing worth mentioning happening :(\n        </p>\n        <p>\n          Make something great happen by clicking + sign below!\n        </p>\n      </div>\n    );\n  }\n\n  return (\n    <div class='empty-list-item'>\n      <p>\n        Pick a date you like!\n      </p>\n    </div>\n  );\n};\n\nconst CreateEventButton = () => (state, { showForm }) => (\n  <div class='show-form-button' onclick={() => showForm()}>\n    Create event\n  </div>\n);\n\n\nconst DeleteEventsButton = () => ({ events }, actions) => {\n  if (events.length > 0) {\n    return (\n      <div class='remove-events-button' onclick={() => actions.showDeleteList()}>\n        Remove event\n      </div>\n    );\n  }\n\n  return null;\n};\n\nconst EventListItem = ({ name, start }) => () => (\n  <div class='event-list-item'>\n    <div class='start'>{start}</div>\n    <div class='name'>{name}</div>\n  </div>\n);\n\nconst CreateEventForm = () => ({ editor }) => (\n  <div class='create-event'>\n    <NameInput />\n    <StartTimeInput />\n    <div class='buttons'>\n      <CancelButton editor={editor} />\n      <ConfirmButton id={editor.id} />\n    </div>\n  </div>\n);\n\nconst NameInput = () => (state, { setName }) => (\n  <div class='create-event-name create-event-input-holder'>\n    <div class='label'>\n      Name:\n    </div>\n    <div>\n      <input\n        type='text'\n        onchange={e => setName(e.target.value)}\n      />\n    </div>\n  </div>\n);\n\nconst StartTimeInput = () => (state, { setStartTime }) => (\n  <div class='create-event-start create-event-input-holder'>\n    <div class='label'>\n      Start:\n    </div>\n    <div>\n      <input\n        type='time'\n        onchange={e => setStartTime(e.target.value)}\n      />\n    </div>\n  </div>\n);\n\nconst CancelButton = ({ editor }) => (state, { renderEditor }) => (\n  <div class='cancel-button' onclick={() => renderEditor(editor)}>\n    Cancel\n  </div>\n);\n\nconst ConfirmButton = ({ id }) => (state, { createEvent }) => (\n  <div class='confirm-button' onclick={() => createEvent(id)}>\n    Confirm\n  </div>\n);\n\nconst ConfirmDeleteButton = ({ id }) => ({ deleteId }, { deleteEvents }) => {\n  if (deleteId === null) {\n    return null;\n  }\n  return (\n    <div class='confirm-button' onclick={() => deleteEvents(id)}>\n      Confirm\n    </div>\n  );\n};\n","import { h } from 'hyperapp';\nimport Header from './header';\nimport Calendar from './calendar';\nimport Editor from './editor';\n\nexport default ({ calendar }) => (\n  <div id='holder'>\n    <Header\n      year={calendar.year}\n      month={calendar.month}\n    />\n    <Calendar\n      year={calendar.year}\n      month={calendar.month}\n      firstDay={calendar.firstDay}\n      days={calendar.days}\n    />\n    <Editor />\n  </div>\n);\n","import { app } from 'hyperapp';\n\nimport actions from './actions';\nimport state from './state';\nimport view from './views';\n\napp(state, actions, view, document.body);\n"]}