{"version":3,"names":["LocationCache","AExprRegistryClass","__SystemJSRewritingHack","LoggingModes","AExprRegistry","normalizeLocation","url","indexOf","substring","setters","_utilsEventTargetJs","EventTarget","default","_srcClientPreferencesJs","Preferences","execute","_recorder_","_src_client_reactive_active_expression_ae_registry_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","constructor","unknownLocations","counter","aes","files","Map","add","ae","meta","has","location","file","locationArray","_getColumn","start","line","column","push","remove","aesInLocation","getAEsInLocation","splice","clear","getLoggingMode","undefined","_getLine","loggingMode","DEFAULT","_getFile","setLoggingModeIfDefault","fileObj","ALL","setLoggingMode","mode","getAEsInColumn","getAEsInFile","extractAEsRecursive","getAEsInLine","fileID","getOrCreate","lines","columns","map","values","flatMap","v","_export","SMART","NONE","oldRegistry","aexprs","aesPerLocation","eventTarget","callbackStack","evaluationStack","Set","addAExpr","aexpr","buildIdFor","dispatchEvent","removeAExpr","deleted","delete","updateAExpr","on","type","callback","addEventListener","off","removeEventListener","addToCallbackStack","popCallbackStack","pop","addToEvaluationStack","popEvaluationStack","locationId","id","purge","each","_isDisposed","callbacks","allAsArray","Array","from","getLocationCache","reference","listeners","filter","listener","eventListeners","fileSaved","toggleLoggingLocation","setLoggingLocation","shouldLog","enable","isInteresting","openURLs","document","body","querySelectorAll","c","getAttribute","self","__aeRegistry__"],"sources":["ae-registry.js"],"sourcesContent":["\nimport EventTarget from '../utils/event-target.js';\nimport Preferences from 'src/client/preferences.js';\n\n  \nfunction normalizeLocation(url) {\n  if(!url || !url.indexOf) return url;\n  return url.substring(url.indexOf(\"/src/\"));\n}\n\nclass LocationCache {\n   \n  constructor() {\n    this.unknownLocations = { counter: 0, aes: [] };\n    this.files = new Map();\n  }\n\n  // adds an AE into the cache and returns an unique identifier for this AE.\n  add(ae) {\n    if (ae.meta().has('location')) {\n      let location = ae.meta().get('location');\n      let file = normalizeLocation(location.file);\n      let locationArray = this._getColumn(file, location.start.line, location.start.column);\n      locationArray.aes.push(ae);\n      return file + '@' + location.start.line + ':' + location.start.column + \"#\" + ++locationArray.counter;\n    } else {\n      this.unknownLocations.aes.push(ae);\n      return 'unknown_location#' + ++this.unknownLocations.counter;\n    }\n  }\n\n  remove(ae) {\n    if (ae.meta().has('location')) {\n      let location = ae.meta().get('location');\n      const aesInLocation = this.getAEsInLocation(location);\n      aesInLocation.splice(aesInLocation.indexOf(ae));\n    } else {\n      this.unknownLocations.aes.splice(this.unknownLocations.aes.indexOf(ae));\n    }\n  }\n  \n  clear() {\n    this.files.clear();\n    this.unknownLocations = { counter: 0, aes: [] };\n  }\n  \n  getLoggingMode(file, line = undefined) {\n    if(line) {\n      if(this._getLine(file, line).loggingMode !== LoggingModes.DEFAULT) {\n        return this._getLine(file, line).loggingMode;\n      }\n    }\n    return this._getFile(file).loggingMode;\n  }\n  \n  setLoggingModeIfDefault(file) {\n    const fileObj = this._getFile(file);\n    if(fileObj.loggingMode === LoggingModes.DEFAULT) {\n      fileObj.loggingMode = LoggingModes.ALL;\n    }\n  }\n  \n  setLoggingMode(mode, file, line = undefined) {\n    if(line) {\n      this._getLine(file, line).loggingMode = mode;\n    } else {\n      this._getFile(file).loggingMode = mode;\n    }\n  }\n\n  getAEsInLocation(location) {\n    let file = normalizeLocation(location.file);\n    return this.getAEsInColumn(file, location.start.line, location.start.column);\n  }\n\n  getAEsInFile(file) {\n    return this.extractAEsRecursive(this._getFile(file));\n  }\n\n  getAEsInLine(file, line) {\n    return this.extractAEsRecursive(this._getLine(file, line));\n  }\n\n  getAEsInColumn(file, line, column) {\n    return this.extractAEsRecursive(this._getColumn(file, line, column));\n  }\n  \n  _getFile(file) {\n    let fileID = normalizeLocation(file);\n    return this.files.getOrCreate(fileID, () => {return {loggingMode: LoggingModes.DEFAULT, lines: new Map()}});\n  }\n  \n  _getLine(file, line) {\n    return this._getFile(file).lines.getOrCreate(line, () => {return {loggingMode: LoggingModes.DEFAULT, columns: new Map()}})\n  }\n  \n  _getColumn(file, line, column) {\n    return this._getLine(file, line).columns.getOrCreate(column, () => {return {counter: 0, aes: []}});\n  }\n  \n  extractAEsRecursive(map) {\n    if(!map) return [];\n    if(map.lines) return this.extractAEsRecursive(map.lines);\n    if(map.columns) return this.extractAEsRecursive(map.columns);\n    if (map instanceof Map) {\n      return [...map.values()].flatMap((v) => this.extractAEsRecursive(v));\n    } else {\n      return map.aes;\n    }\n  }\n}\n\n\nexport const LoggingModes = {\n  ALL: \"ALL\",\n  SMART: \"SMART\",\n  NONE: \"NONE\",\n  DEFAULT: \"DEFAULT\",\n}\n/*MD ## Registry of Active Expressions MD*/\nclass AExprRegistryClass {\n  \n  constructor(oldRegistry) {\n    if(oldRegistry) {\n      this.aexprs = oldRegistry.aexprs;\n      this.aesPerLocation = oldRegistry.aesPerLocation;\n      this.eventTarget = oldRegistry.eventTarget;\n      this.callbackStack = oldRegistry.callbackStack;\n      this.evaluationStack = oldRegistry.evaluationStack;\n    } else {\n      this.aexprs = new Set();\n      this.aesPerLocation = new LocationCache();\n      this.eventTarget = new EventTarget();\n      this.callbackStack = [];\n      this.evaluationStack = [];\n    }\n  }\n\n  get loggingMode() {\n    return Preferences.get(\"EnableAEDebugging\") ? (Preferences.get(\"SmartAELogging\") ? LoggingModes.SMART : LoggingModes.ALL) : LoggingModes.NONE;\n  }\n  \n  /**\n   * Handling membership\n   */\n  addAExpr(aexpr) {\n    this.aexprs.add(aexpr);\n    this.buildIdFor(aexpr);\n    this.eventTarget.dispatchEvent('add', aexpr);\n  }\n  \n  removeAExpr(aexpr) {\n    const deleted = this.aexprs.delete(aexpr);\n    this.aesPerLocation.remove(aexpr);\n    if (deleted) {\n      this.eventTarget.dispatchEvent('remove', aexpr);\n    }\n  }\n  \n  updateAExpr(aexpr) {\n    this.eventTarget.dispatchEvent('update', aexpr);\n  }\n  \n\n  on(type, callback) {\n    return this.eventTarget.addEventListener(type, callback);\n  }\n  \n  off(type, callback) {\n    return this.eventTarget.removeEventListener(type, callback);\n  }\n\n  addToCallbackStack(ae, callback) {\n    this.callbackStack.push({ ae, callback });\n  }\n\n  popCallbackStack() {\n    this.callbackStack.pop();\n  }\n\n  addToEvaluationStack(ae) {\n    this.evaluationStack.push(ae);\n  }\n\n  popEvaluationStack() {\n    this.evaluationStack.pop();\n  }\n\n  evaluationStack() {\n    return this.evaluationStack;\n  }\n\n  buildIdFor(ae) {\n    let locationId = this.aesPerLocation.add(ae);\n    ae.meta({ id: locationId });\n  }\n\n  /**\n   * For Development purpose if the registry gets into inconsistent state\n   */\n  purge() {\n    for (let each of this.aexprs) {\n      each._isDisposed = true;\n    }\n    this.eventTarget.callbacks.clear();\n    this.aexprs.clear();\n    this.aesPerLocation.clear();\n  }\n\n  /**\n   * Access\n   */\n  allAsArray() {\n    return Array.from(this.aexprs);\n  }\n  \n  getLocationCache() {\n    return this.aesPerLocation;\n  }\n\n  addEventListener(reference, callback) {\n    if (!this.listeners) this.listeners = [];\n    this.listeners.push({ reference, callback });\n  }\n\n  removeEventListener(reference) {\n    if (!this.listeners) return;\n    this.listeners = this.listeners.filter(listener => listener.reference !== reference);\n  }\n\n  eventListeners() {\n    if (!this.listeners) return [];\n    return this.listeners;\n  }\n  \n  fileSaved(url) {\n    if(this.loggingMode === LoggingModes.SMART) {\n      this.aesPerLocation.setLoggingModeIfDefault(url);\n    }\n  }\n  \n  toggleLoggingLocation(url, line = undefined) {\n    this.setLoggingLocation(!this.shouldLog(url, line), url, line);\n  }\n  \n  setLoggingLocation(enable, url, line = undefined) {\n    this.aesPerLocation.setLoggingMode(enable ? LoggingModes.ALL : LoggingModes.NONE, url, line);\n  }\n  \n  shouldLog(url, line = undefined) {\n    let mode = this.aesPerLocation.getLoggingMode(url, line);\n    mode = mode === LoggingModes.DEFAULT ? this.loggingMode : mode;\n    switch(mode) {\n      case LoggingModes.ALL:\n        return true;\n      case LoggingModes.NONE:\n        return false;\n      case LoggingModes.SMART:\n        return this.isInteresting(url);\n      default:\n        return false;\n    }\n  }\n  \n  isInteresting(url) {\n    //is currently open\n    url = normalizeLocation(url);\n    const openURLs = new Set((Array.from(document.body.querySelectorAll('lively-container')).map(c => normalizeLocation(c.getAttribute('src')))));\n    return openURLs.has(url);\n  }\n}\nself.__aeRegistry__ = new AExprRegistryClass(self.__aeRegistry__);\nexport const AExprRegistry = self.__aeRegistry__;"],"mappings":"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"}