{"version":3,"names":["System","register","_export","_context","_attributeExpression","_childElement","_childText","_childExpression","_attributeStringLiteral","_children","_attributes","_element","_addSourceLocation","focalStorage","debounce","scriptManager","Connection","moment","ViewNav","Persistence","__SystemJSRewritingHack","isCurrentlyCloning","sessionStorage","default","setters","_reactiveJsx","attributeExpression","childElement","childText","childExpression","attributeStringLiteral","children","attributes","element","addSourceLocation","_srcExternalFocalStorageJs","_utils","_srcClientScriptManagerJs","_srcComponentsHaloConnectionJs","_srcExternalMomentJs","_srcClientViewnavJs","execute","_recorder_","_src_client_persistence_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","constructor","_context2","saveDelay","saveLivelyContent","showMutationIndicator","style","backgroundColor","call","backupStep","running","lively","persistence","current","ensureLivelyContentBackups","setTimeout","window","lively4persistence","obj","enable","disable","start","stop","observeHTMLChanges","list","backupIntervals","reverse","i","ea","previous","ensureLivelyContentBackup","undefined","mutationObserver","disconnect","urlToKey","urlString","replace","defaultTarget","document","body","defaultURL","location","protocol","hostname","pathname","getLivelyContentForURL","url","content","getItem","toString","elementSource","files","loadFile","lively4url","html","parseHTML","innerHTML","e","error","setLivelyContentForURL","source","setItem","loadLivelyContentForURL","target","loadLivelyContent","div","createElement","file","end","column","line","topLevel","Array","from","querySelectorAll","objs","childNodes","zIndexMap","Map","forEach","zIndex","map","classList","contains","ele","remove","appendChild","components","loadUnresolved","sleep","then","initLivelyObject","findLively4Script","livelyLoad","deserializeFromObjectIfNeeded","showError","interval","previousInterval","force","key","datePrefix","sourcePrefix","dateFormat","dateString","lastBackupDate","Number","isNaN","warn","today","diff","minutesForBackupInterval","backupDate","format","previousBackupKey","loadLivelyContentBackup","notify","storeLivelyContentForURL","isPersisting","getGlobalSource","lastSaved","Date","now","self","__gs_sources__","saveOpenWindows","hasDoNotPersistTag","node","donotperist","hasOwnProperty","parentElement","isBlacklisted","mutation","tagName","id","getAttribute","indicator","querySelector","position","right","top","width","height","pointerEvents","onMutation","mutations","observer","filter","record","MutationObserver","observe","childList","subtree","characterData","Error","restoreBackupContextMenuItems","result","push","restoreBackupContextMenuItem","time","s","label","evt","scrollPane","ui","contents","length","win","setClientPosition","getPosition"],"sources":["persistence.js"],"sourcesContent":["\"disable deepeval\"\n\nimport focalStorage from 'src/external/focalStorage.js'\nimport {debounce} from \"utils\"\nimport scriptManager from  \"src/client/script-manager.js\";\nimport Connection from 'src/components/halo/Connection.js'\nimport moment from 'src/external/moment.js'\nimport ViewNav from 'src/client/viewnav.js'\n\nexport function isCurrentlyCloning() {\n    return sessionStorage[\"lively.persistenceCurrentlyCloning\"] === 'true';\n}\n\nexport default class Persistence {\n  \n  constructor() {\n    this.saveDelay = (() => {\n        this.saveLivelyContent();\n        this.showMutationIndicator().style.backgroundColor = \"rgba(10,10,10,0.3)\"\n    })::debounce(3000) // save the world 3seconds after a change\n  }\n\n  backupStep() {\n    if (this.running && lively.persistence.current === this) {\n      this.ensureLivelyContentBackups()\n      setTimeout(() => this.backupStep(), 60 * 1000)\n    } else {\n      // stop silently\n    }\n    \n  }  \n  \n  // work around non static module global state\n  static get current() {\n    if (!window.lively4persistence) {\n      window.lively4persistence = new Persistence()\n    }\n    return window.lively4persistence\n  }\n  static set current(obj) {\n    window.lively4persistence = obj\n  }\n\n  static enable() {\n    this.disable() // #TODO this only works with one module... and breaks when we have many....\n    this.current = new Persistence()\n    this.current.start()\n  }\n  \n  static disable() {\n    if (this.current) {\n      this.current.stop()\n    }\n  }\n \n  start() {\n    this.running = true\n    this.ensureLivelyContentBackups();\n    this.observeHTMLChanges()\n    this.backupStep()\n  }\n \n  ensureLivelyContentBackups() {\n    var list = Persistence.backupIntervals().reverse()\n    for(let i in list) {\n      var ea = list[i]\n      var previous = list[i + 1]\n      this.ensureLivelyContentBackup(undefined, ea, previous)      \n    }\n  }\n\n  stop() {\n    if (this.mutationObserver) this.mutationObserver.disconnect()\n    this.running = false\n  }\n  \n  urlToKey(urlString) {\n    urlString = \"\" + urlString\n    return \"livelyWindows_\"+urlString.replace(/^https?:\\/\\//,\"\").replace(/[^A-Za-z0-9]/,\"_\")\n  }\n\n  defaultTarget() {\n    return document.body\n  }\n\n  defaultURL() {\n    return (document.location.protocol + \"//\" + document.location.hostname + document.location.pathname) \n  }\n\n  async getLivelyContentForURL(url) {\n    url = url || this.defaultURL()   \n    var content = await focalStorage.getItem(this.urlToKey(url.toString()))\n    if (!content) {\n      try {\n        var elementSource = await lively.files.loadFile(lively4url + \"/src/parts/initial-content.html\")\n        content = lively.html.parseHTML(elementSource)[0].innerHTML\n      } catch(e) {\n        lively.error(\"Could not load default desktop conent for lively\", e)\n      }\n    }\n    return content\n  }\n  \n  \n  setLivelyContentForURL(url, source) {\n    url = url || this.defaultURL()   \n    return focalStorage.setItem(this.urlToKey(url.toString()), source)\n  }\n\n  async loadLivelyContentForURL(url, target) {\n    var source = await this.getLivelyContentForURL(url) \n    return this.loadLivelyContent(source, target)\n  }\n  \n  async loadLivelyContent(source, target) {\n    target = target || this.defaultTarget()\n    var div = document.createElement(\"div\")\n    div.innerHTML = source\n    var topLevel = Array.from(div.querySelectorAll(\":scope > *\"))\n    var objs = Array.from(div.childNodes)\n    \n    // somehow zIndex gets lost...\n    var zIndexMap = new Map()\n    topLevel.forEach(ea => {\n       zIndexMap.set(ea, ea.style.zIndex)\n    })\n    \n    objs.map(ea => {\n      if(ea.classList && ea.classList.contains('lively-preferences')) {\n        target.querySelectorAll('div.lively-preferences').forEach(ele => ele.remove());\n      }\n      target.appendChild(ea);\n    });\n    await lively.components.loadUnresolved(target, true, \"loadLivelyContentForURL\", true)\n    \n    // restore zIndex in an Async way... it seems focus is responsible for it #Hack\n    lively.sleep(0).then(() => {\n      topLevel.forEach(ea => {\n        ea.style.zIndex = zIndexMap.get(ea)\n      })\n    })\n    \n    objs.map(ea => { Persistence.initLivelyObject(ea)})\n    return \n  }\n  \n  static initLivelyObject(obj) {\n    if (!obj) return;\n    try {\n      scriptManager.findLively4Script(obj, false);\n      if (obj.livelyLoad) obj.livelyLoad()\n      Connection.deserializeFromObjectIfNeeded(obj)\n      if (!obj.querySelectorAll) return;\n      obj.querySelectorAll(\"*\").forEach(ea => {\n        if (ea.livelyLoad) ea.livelyLoad()\n        Connection.deserializeFromObjectIfNeeded(ea)\n      })       \n    } catch(e) {\n      lively.showError(e)\n    }\n  }\n\n  \n  \n  async ensureLivelyContentBackup(url=this.defaultURL(), interval=\"yesterday\", previousInterval, force) {\n    var key = this.urlToKey(url.toString())\n    const datePrefix = `backup_${interval}_date_` \n    const sourcePrefix = `backup_${interval}_source_` \n    const dateFormat = \"YYYY-MM-DD HH:mm:ss\"\n    \n    var dateString = await focalStorage.getItem(datePrefix+ key)  \n    var lastBackupDate = moment(dateString, dateFormat)\n    if (Number.isNaN(0+lastBackupDate)) {\n      lively.warn(\"[backup] Currupt date string\", dateString)\n      dateString = undefined // handle corrupt date string\n    }\n    \n    var today = moment()  \n    // lively.notify(\"minutes since \"  + interval + \" \"  + today + \" \" + lastBackupDate + \" \" + this.minutesForBackupInterval(interval))\n    if (force || !dateString ||  today.diff(lastBackupDate, \"minutes\") > this.minutesForBackupInterval(interval)) {\n      var backupDate =  today.format(dateFormat)\n      var previousBackupKey = key\n      if (previousInterval) {\n        previousBackupKey = `backup_${previousInterval}_source_` + key\n        backupDate =  await focalStorage.getItem(`backup_${previousInterval}_date_` + key) \n        if (!moment(backupDate, dateFormat) ) {\n          backupDate = moment().format(dateFormat) // handle corrupt date string\n        }\n        \n      }\n      var source = await focalStorage.getItem(previousBackupKey) // get current source ... @onsetsu or should we use current world?\n\n      await focalStorage.setItem(datePrefix + key, backupDate)\n      await focalStorage.setItem(sourcePrefix + key, source)\n      // lively.notify(`Ensured ${interval} backup! ` + backupDate)\n    } else {\n      // lively.notify(`Last ${interval} backup is not old enough`)\n    }\n  }\n\n  async loadLivelyContentBackup(url=this.defaultURL(), interval=\"yesterday\", target=this.defaultTarget()) {\n    var key = this.urlToKey(url.toString())\n    const sourcePrefix = `backup_${interval}_source_` \n    var source = await focalStorage.getItem(sourcePrefix + key)    \n    if (source) {\n      this.loadLivelyContent(source, target)\n      lively.notify(`load ${interval} backup!`)\n    } else {\n      lively.notify(`could not load ${interval} backup!`)\n    }\n  }\n\n  \n  \n  async storeLivelyContentForURL(url, target) {\n    target = target || this.defaultTarget()\n    this.isPersisting = true\n    var source = lively.html.getGlobalSource(target)\n    this.setLivelyContentForURL(url, source)\n    setTimeout(() => {\n      this.isPersisting = false\n    }, 0) // the mutation events triggered are still pending here...\n    return source\n  }\n  \n  async saveLivelyContent() {\n    // console.log(\"[peristence] save after \" + \n    //   (Date.now() - this.lastSaved) +\"ms\")\n    this.lastSaved = Date.now()   \n    await this.storeLivelyContentForURL()\n    if (self.__gs_sources__) {\n      self.__gs_sources__.saveOpenWindows()\n    }\n    // console.log(\"[peristence] saved lively content into focalStorage \" + \n    //   (Date.now() - this.lastSaved) +\"ms\")\n  }\n  \n  \n  hasDoNotPersistTag(node,) {\n    var donotperist =  node.attributes && \n      node.attributes.hasOwnProperty('data-lively4-donotpersist');\n    if (donotperist) return true\n    if (!node.parentElement) return false\n    return this.hasDoNotPersistTag(node.parentElement)\n  }\n  \n  isBlacklisted(mutation) {\n    if (mutation.target.tagName == \"BODY\") return true\n    if (mutation.target.tagName == \"LIVELY-MENU\") return true\n    if (mutation.target.tagName == \"LIVELY-SELECTION\") return true\n    if (mutation.target.tagName == \"LIVELY-HAND\") return true\n    if (mutation.target.tagName == \"LIVELY-HALO\") return true\n    if (mutation.target.tagName == \"LIVELY-NOTIFICATION-LIST\") return true\n    if (mutation.target.id == \"mutationIndicator\") return true\n    if (mutation.target.getAttribute && mutation.target.getAttribute(\"data-is-meta\")) return true\n    if (this.hasDoNotPersistTag(mutation.target)) return true\n    return false\n  }\n  \n  showMutationIndicator() {\n    var indicator = document.body.querySelector(\"#mutationIndicator\")\n    if (!indicator)  {\n      var div = document.createElement(\"div\")\n      div.id = \"mutationIndicator\"\n      document.body.appendChild(div)\n      div.style.position = \"fixed\"\n      div.style.right = \"0px\"\n      div.style.top = \"0px\"\n      div.style.width = \"10px\"\n      div.style.height = \"10px\"\n      div.style.backgroundColor = \"blue\"\n      div.style.pointerEvents = \"none\"\n      div.style.zIndex = 2000\n      \n      indicator = div\n    }\n    return indicator\n  }\n  \n  \n  onMutation(mutations, observer) {\n    if (this.isPersisting) {\n      // console.log(\"ignore mutation \", mutations)\n      return // we mutate while persisting \n    }\n    \n    mutations.filter(ea => !this.isBlacklisted(ea)).forEach(record => {\n      this.showMutationIndicator().style.backgroundColor = \"rgba(200,0,0,0.5)\"\n      this.saveDelay()\n    })  \n  }\n  \n  observeHTMLChanges(target) {\n    target = target || this.defaultTarget()\n    if (this.mutationObserver) this.mutationObserver.disconnect()\n    this.mutationObserver = new MutationObserver((mutations, observer) => {\n        this.onMutation(mutations, observer)\n    });\n    this.mutationObserver.observe(target, {\n      childList: true, \n      subtree: true, \n      characterData: true, \n      attributes: true});\n  }\n  \n  minutesForBackupInterval(interval) {\n    // #TODO refactor... this duplication does not look nice\n    if (interval === \"lastminute\") {\n      return 1\n    }\n    if (interval === \"someminutes\") {\n      return 2\n    }\n    if (interval === \"yesterday\") {\n      return 1 * 24 * 60\n    }\n    if (interval === \"hour\") {\n      return  1 * 60\n    }\n    if (interval === \"twohours\") {\n      return  2 * 60\n    }\n    if (interval === \"week\") {\n      return  7 * 24 * 60\n    }\n    if (interval === \"month\") {\n      return  31 * 7 * 24 * 60\n    }\n    throw new Error(interval + \" not supported\")\n  }\n   \n  static backupIntervals() {\n    return [\"lastminute\", \"someminutes\", \"hour\", \"twohours\", \"yesterday\", \"week\", \"month\"]\n  }\n  \n  static restoreBackupContextMenuItems() {\n    var result = []\n    for(let ea of this.backupIntervals()) {\n      result.push(this.restoreBackupContextMenuItem(ea))\n    }\n    return result\n  }\n  \n  static restoreBackupContextMenuItem(interval) {\n    let time = <span></span>\n    let key = `backup_${interval}_date_` + this.current.urlToKey(this.current.defaultURL())\n    focalStorage.getItem(key).then(s => {\n      time.innerHTML = \"\" + s\n    })\n    var label = <span style=\"\">{time} {interval}</span>\n\n                         \n    return [label, async (evt) => {\n          // #TODO refactor into component so that behavior is persistent\n          var target = <div id=\"contentRoot\"></div>\n          var scrollPane = <div style=\"background-color: gray; position:relative; width:100%; height:100%; overflow:scroll\">{target}</div>\n\n          ViewNav.enable(target)\n          var ui = <div>{scrollPane}\n                <div style=\"position:absolute; top:0px; left:0px\">\n                <button click={() => {\n\n                      var contents = Array.from(target.childNodes)\n                      document.body.innerHTML = \"\"\n                      for(let ea of contents) {\n                        document.body.appendChild(ea)\n                      }\n\n                      lively.notify(\"would restore \" + contents.length + \" elements\" )\n\n                  }}>restore</button>\n                </div></div>\n          var win = await (<lively-window title={\"Restore \" + interval}>{ui}</lively-window>)\n          document.body.appendChild(win)\n          lively.setClientPosition(win, lively.getPosition(evt))\n          lively.persistence.current.loadLivelyContentBackup(undefined, interval, target)\n        }\n      ]\n  }\n  \n}\n\n\nif (self.lively) {\n  if (lively.persistence) lively.persistence.disable()\n  lively.persistence = Persistence\n  Persistence.enable()\n}\n\n"],"mappings":"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"}