{"version":3,"names":["ExpressionAnalysis","Dependency","DependencyKey","Hook","SourceCodeHook","DataStructureHook","PropertyWrappingHook","MutationObserverHook","EventBasedHook","FrameBasedHook","RewritingActiveExpression","DependencyAPI","DependencyManager","TracingHandler","getAEDataForFile","url","result","Map","ae","AExprRegistry","getLocationCache","getAEsInFile","set","getDependenciesAndHooksForAE","hook","getHooksInFile","dependency","getDependencies","DependenciesToAExprs","getAExprsForDep","location","meta","get","file","includes","getOrCreate","push","getKey","getDepsForAExpr","getHooks","allHooks","ContextAndIdentifierToDependencies","allValues","flatMap","dep","hooksWithLocations","Promise","all","map","getLocations","then","locations","filter","some","loc","aexpr","func","args","reset","clear","traceMember","obj","prop","expressionAnalysisMode","associateMember","getMember","getAndCallMember","updateMember","memberUpdated","setMember","val","setMemberAddition","setMemberSubtraction","setMemberMultiplication","setMemberDivision","setMemberRemainder","setMemberExponentiation","setMemberLeftShift","setMemberRightShift","setMemberUnsignedRightShift","setMemberBitwiseAND","setMemberBitwiseXOR","setMemberBitwiseOR","deleteMember","getLocal","scope","varName","value","associateLocal","setLocal","localUpdated","getGlobal","globalName","associateGlobal","setGlobal","globalUpdated","BaseActiveExpression","frameBasedAExpr","Stack","CompositeKey","InjectiveMap","BidirectionalMultiMap","DualKeyMap","isFunction","isFunctionALT","lively","_","DebuggingCache","Preferences","analysisStack","window","__expressionAnalysisMode__","recalculateDependencies","findUp","currentAExpr","Error","withElement","dependencies","Set","isError","evaluateToCurrentValue","e","console","error","message","applyDependencies","top","associateDependency","add","currentDependencies","currentSet","removedDependencies","has","newDependencies","forEach","disassociate","associate","matching","index","findIndex","dependency2","equalish","removed","added","currentVersion","splice","length","logEvent","d","d1","d2","type","isEqual","getOrCreateFor","context","identifier","constructor","_type","isTracked","hooks","updateTracking","hasAExprsForDep","untrack","track","updateFiles","contextIdentifierValue","isGlobal","isGlobalDependency","sourceCodeHook","associateWithHook","dataStructure","Array","getOrCreateForDataStructure","wrappingHook","getOrCreateForProperty","HTMLElement","tagName","endsWith","getOrCreateForElement","instance","addDependency","removeSecondary","removeDependency","undefined","notifyAExprs","aexprs","checkAndNotifyAExprs","isMemberDependency","isLocalDependency","self","getName","toString","name","getAsDependencyDescription","object","property","_depsToAExprs","remove","disconnectAllForAExpr","deps","removeAllLeftFor","hasLeft","from","getRightsFor","hasRight","getLeftsFor","hasDepsForAExpr","getAllLeft","getDependency","equals","other","isArray","getCurrentVersion","getValue","identifer","DataStructureHookByDataStructure","WeakMap","PropertyWrappingHookByProperty","MutationObserverHookByHTMLElement","EventBasedHookByHTMLElement","installed","locationPromises","addLocation","addToMember","l","resolved","delete","informationString","notifyDependencies","debugging","findRegistrationLocation","install","uninstall","monitorProperties","getPrototypeDescriptors","proto","prototype","descriptors","Object","getOwnPropertyDescriptors","entries","key","desc","wrapProperty","descriptor","after","defineProperty","assign","apply","call","myself","prototypeDescriptors","ignoredDescriptorKeys","addDescriptor","__compareAExprResults__","configurable","enumerable","getOwnPropertyDescriptor","element","_element","o","MutationObserver","mutations","observer","changeHappened","observe","attributes","attributeFilter","attributeOldValue","characterData","characterDataOldValue","childList","subtree","addEventListener","editor","on","_instance","initializeAe","x","isMeta","onChange","strategy","updateDependencies","dispose","disconnectAllFor","asAExpr","isDisabled","supportsDependencies","getDataBindingDependencyKey","isDataBinding","dataBindingDependencyKey","sharedDependenciesWith","otherAExpr","ownDependencies","otherDependencies","own","shared","computeDiff","_aexpr","locals","members","globals","globalRef","global","notificationQueue","cbStack","callbackStack","cbTop","info","resolve","resolvedLoc","parentAE","parentCallback","callback","slice","reverse","evaluationStack","infos","stackItem","sort","a","b","id","checkAndNotify","stack","frames","frame","getSourceLocBabelStyle","notificationFrame"],"sources":["active-expression-rewriting.js"],"sourcesContent":["import 'lang';\n\n/*HTML \n<img src=\"https://lively-kernel.org/lively4/lively4-core/media/lively4_logo_smooth_100.png\"></img>'s Implementation of AExprs\nHTML*/\n\nimport { BaseActiveExpression } from 'active-expression';\nimport * as frameBasedAExpr from \"active-expression-frame-based\";\n\nimport Stack from './../utils/stack.js';\nimport CompositeKey from './composite-key.js';\nimport InjectiveMap from './injective-map.js';\nimport BidirectionalMultiMap from './bidirectional-multi-map.js';\nimport DualKeyMap from './dual-key-map.js';\nimport { isFunctionALT as isFunction } from 'utils';\nimport lively from \"src/client/lively.js\";\nimport _ from 'src/external/lodash/lodash.js';\nimport { AExprRegistry } from 'src/client/reactive/active-expression/ae-registry.js';\n\nimport { DebuggingCache } from 'src/client/reactive/active-expression/ae-debugging-cache.js';\nimport Preferences from 'src/client/preferences.js';\n/*MD # Dependency Analysis MD*/\n\nconst analysisStack = new Stack();\n\nlet expressionAnalysisMode = false;\nwindow.__expressionAnalysisMode__ = false;\n\nclass ExpressionAnalysis {\n\n  static recalculateDependencies(aexpr) {\n    if (analysisStack.findUp(({ currentAExpr }) => currentAExpr === aexpr)) {\n      throw new Error('Attempt to recalculate an Active Expression while it is already recalculating dependencies');\n    }\n\n    try {\n      expressionAnalysisMode = true;\n      window.__expressionAnalysisMode__ = expressionAnalysisMode;\n\n      // Do the function execution in ExpressionAnalysisMode\n      analysisStack.withElement({ currentAExpr: aexpr, dependencies: new Set() }, () => {\n        try {\n          const { value, isError } = aexpr.evaluateToCurrentValue();\n        } catch(e) {\n          console.error(\"Error during AE Dependency Calculation\", e.message);\n        }finally {\n          this.applyDependencies();\n        }\n      });\n    } finally {\n      expressionAnalysisMode = !!analysisStack.top();\n      window.__expressionAnalysisMode__ = expressionAnalysisMode;\n    }\n  }\n\n  static associateDependency(dependency) {\n    const { dependencies } = analysisStack.top();\n    dependencies.add(dependency);\n  }\n\n  static applyDependencies() {\n    const { currentAExpr, dependencies } = analysisStack.top();\n    \n    const currentDependencies = currentAExpr.dependencies().all();\n    const currentSet = new Set(currentDependencies);\n    let removedDependencies = currentDependencies\n      .filter(dependency => !dependencies.has(dependency));\n    const newDependencies = [...dependencies]\n      .filter(dependency => !currentSet.has(dependency));\n    \n    removedDependencies\n      .forEach(dependency => DependenciesToAExprs.disassociate(dependency, currentAExpr));\n    dependencies.forEach(dependency => {\n      DependenciesToAExprs.associate(dependency, currentAExpr);\n    });\n    \n    const matching = [];\n    removedDependencies = removedDependencies.filter((dependency) => {\n      const index = newDependencies.findIndex((dependency2 => this.equalish(dependency, dependency2)));\n      if(index >= 0) {\n        matching.push({removed: dependency.getKey(), added: newDependencies[index].getKey()});\n        dependency.currentVersion = newDependencies[index];\n        newDependencies.splice(index, 1);\n        return false;\n      }\n      return true;\n    });\n    if(newDependencies.length > 0 || removedDependencies.length > 0 || matching.length > 0) {\n      currentAExpr.logEvent('dependencies changed', { added: newDependencies.map(d => d.getKey()), removed: removedDependencies.map(d => d.getKey()), matching});\n    }\n  }\n\n  static equalish(d1, d2) {\n    if(d1.type() !== d2.type()) return false;\n    return _.isEqual(d1.getKey(), d2.getKey());\n  }\n  \n}\n\nclass Dependency {\n  static getOrCreateFor(context, identifier, type) {\n    return ContextAndIdentifierToDependencies.getOrCreate(context, identifier, () => new Dependency(context, identifier, type));\n  }\n  \n  // Generates a key for this dependency. This allows this dependency to be found again at a later time, after the originial dependency might have already been deleted.\n  getKey() {\n    return new DependencyKey(this.context, this.identifier);\n  }\n\n  // #TODO: compute and cache isGlobal\n  constructor(context, identifier, type) {\n    this._type = type;\n    // this.classFilePath = context.__classFilePath__;\n    this.isTracked = false;\n    this.hooks = [];\n    this.context = context;\n    this.identifier = identifier;\n  }\n\n  updateTracking() {\n    if (this.isTracked === DependenciesToAExprs.hasAExprsForDep(this)) {\n      return;\n    }\n    if (this.isTracked) {\n      this.untrack();\n    } else {\n      this.track();\n    }\n    for (const hook of this.getHooks()) {\n      hook.getLocations().then(locations => DebuggingCache.updateFiles(locations.map(loc => loc.file)));\n    }\n    for (const ae of DependenciesToAExprs.getAExprsForDep(this)) {\n      if (ae.meta().has(\"location\")) {\n        DebuggingCache.updateFiles([ae.meta().get(\"location\").file]);\n      }\n    }\n  }\n\n  track() {\n    this.isTracked = true;\n\n    const [context, identifier, value] = this.contextIdentifierValue();\n    const isGlobal = this.isGlobalDependency();\n\n    /*HTML <span style=\"font-weight: bold;\">Source Code Hook</span>: for anything <span style=\"color: green; font-weight: bold;\">members or locals</span> HTML*/\n    // always employ the source code hook\n    this.sourceCodeHook = new SourceCodeHook(context, identifier);\n    this.associateWithHook(this.sourceCodeHook);\n\n    /*HTML <span style=\"font-weight: bold;\">Data Structure Hook</span>: for <span style=\"color: green; font-weight: bold;\">Sets, Arrays, Maps</span> HTML*/\n    let dataStructure;\n    if (this._type === 'member') {\n      dataStructure = context;\n    } else if (this._type === 'local') {\n      dataStructure = value;\n    }\n    if (dataStructure instanceof Array || dataStructure instanceof Set || dataStructure instanceof Map) {\n      this.associateWithHook(DataStructureHook.getOrCreateForDataStructure(dataStructure));\n    }\n\n    /*HTML <span style=\"font-weight: bold;\">Wrapping Hook</span>: only for <span style=\"color: green; font-weight: bold;\">\"that\"</span> HTML*/\n    if (isGlobal && identifier === 'that') {\n      const wrappingHook = PropertyWrappingHook.getOrCreateForProperty(identifier);\n      this.associateWithHook(wrappingHook);\n    }\n\n    /*HTML <span style=\"font-weight: bold;\">Mutation Observer Hook</span>: handling <span style=\"color: green; font-weight: bold;\">HTMLElements</span> HTML*/\n    if (this._type === 'member' && context instanceof HTMLElement) {\n      // #HACK #TODO: for now, ignore Knotview if unused for Mutations -> need to better separate those hooks, e.g. do not recursively check ALL attribute change, etc.\n      if (context.tagName !== 'LIVELY-TABLE' && !(context.tagName === 'KNOT-VIEW' && (identifier === 'knot' || identifier === 'knotLabel')) && !context.tagName.endsWith('-rp19')) {\n        // TODO: the member also influences what kind of observer we want to use!\n        this.associateWithHook(MutationObserverHook.getOrCreateForElement(context));\n      }\n    }\n\n    /*HTML <span style=\"font-weight: bold;\">Event-based Change Hook</span>: handling <span style=\"color: green; font-weight: bold;\">HTMLElements</span> HTML*/\n    if (this._type === 'member' && context instanceof HTMLElement) {\n      // #TODO: we have to acknowledge that different properties require different events to listen on\n      //  e.g. code-mirror might have 'value' (so need to listen for 'change') or 'getCursor' (so need to listen for 'cursorActivity')\n      // eventBasedHook.listenFor(identifier);\n      this.associateWithHook(EventBasedHook.getOrCreateForElement(context));\n    }\n\n    /*HTML <span style=\"font-weight: bold;\">Frame-based Change Hook</span>: handling <span style=\"color: green; font-weight: bold;\">Date</span> HTML*/\n    // -    if ((this._type === 'member' && context === Date && identifier === 'now') ||\n    if (isGlobal && identifier === 'Date') {\n      //TODO: This violates the each Hook belongs to one Dependency Rule\n      this.associateWithHook(FrameBasedHook.instance);\n    }\n  }\n\n  associateWithHook(hook) {\n    this.hooks.push(hook);\n    hook.addDependency(this);\n  }\n\n  untrack() {\n    this.isTracked = false;\n    ContextAndIdentifierToDependencies.removeSecondary(this.context, this.identifier);\n\n    // Track affected files\n    for (const hook of this.hooks) {\n      hook.removeDependency(this);\n      hook.getLocations().then(locations => DebuggingCache.updateFiles(locations.map(loc => loc.file)));\n    }\n    for (const ae of DependenciesToAExprs.getAExprsForDep(this)) {\n      if (ae.meta().has(\"location\")) {\n        DebuggingCache.updateFiles([ae.meta().get(\"location\").file]);\n      }\n    }\n  }\n\n  //Todo: Replace\n  contextIdentifierValue() {\n    const value = this.context !== undefined ? this.context[this.identifier] : undefined;\n\n    return [this.context, this.identifier, value];\n  }\n\n  notifyAExprs(location, hook) {\n    const aexprs = DependenciesToAExprs.getAExprsForDep(this);\n    DependencyManager.checkAndNotifyAExprs(aexprs, location, this, hook);\n  }\n\n  type() {\n    if (this.isGlobal()) return \"global\";\n    return this._type;\n  }\n\n  isMemberDependency() {\n    return this._type === 'member' && !this.isGlobal();\n  }\n  isGlobalDependency() {\n    return this._type === 'member' && this.isGlobal();\n  }\n  isLocalDependency() {\n    return this._type === 'local';\n  }\n  isGlobal() {\n    return this.context === self;\n  }\n\n  getHooks() {\n    return this.hooks;\n  }\n\n  getName() {\n    const [context, identifier] = this.contextIdentifierValue();\n\n    if (this.isGlobalDependency()) {\n      return identifier.toString();\n    }\n    return (context ? context.constructor.name : \"\") + \".\" + identifier;\n  }\n\n  getAsDependencyDescription() {\n    const [context, identifier, value] = this.contextIdentifierValue();\n\n    if (this.isMemberDependency()) {\n      return {\n        object: context,\n        property: identifier,\n        value\n      };\n    }\n\n    if (this.isGlobalDependency()) {\n      return {\n        name: identifier,\n        value\n      };\n    }\n\n    if (this.isLocalDependency()) {\n      return {\n        scope: context,\n        name: identifier,\n        value\n      };\n    }\n\n    throw new Error('Dependency is neighter local, member, nor global.');\n  }\n\n}\n\n\nconst DependenciesToAExprs = {\n  _depsToAExprs: new BidirectionalMultiMap(),\n\n  associate(dep, aexpr) {\n    if(this._depsToAExprs.has(dep, aexpr)) return;\n    const location = aexpr.meta().get(\"location\");\n    if (location && location.file) {\n      DebuggingCache.updateFiles([location.file]);\n    } \n    this._depsToAExprs.associate(dep, aexpr);\n    dep.updateTracking();\n\n    // Track affected files\n    for (const hook of dep.getHooks()) {\n      hook.getLocations().then(locations => DebuggingCache.updateFiles(locations.map(loc => loc.file)));\n    }\n  },\n  \n  disassociate(dep, aexpr) {\n    this._depsToAExprs.remove(dep, aexpr);\n    dep.updateTracking();\n    for (const hook of dep.getHooks()) {\n      hook.getLocations().then(locations => DebuggingCache.updateFiles(locations.map(loc => loc.file)));\n    }\n    //TODO: Remove AE from assiciated file, if it was the last dependency?\n  },\n\n  disconnectAllForAExpr(aexpr) {\n    const location = aexpr.meta().get(\"location\");\n    const deps = [...this.getDepsForAExpr(aexpr)];\n    this._depsToAExprs.removeAllLeftFor(aexpr);\n    deps.forEach(dep => {      \n      dep.updateTracking()\n    });\n    if(deps.length > 0) {\n      aexpr.logEvent('dependencies changed', { added: [], removed: deps.map(d => d.getKey()), matching: []});\n    }\n    if (location && location.file) {\n      DebuggingCache.updateFiles([location.file]);\n    }\n\n    // Track affected files\n    for (const dep of deps) {\n      for (const hook of dep.getHooks()) {\n        hook.getLocations().then(locations => DebuggingCache.updateFiles(locations.map(loc => loc.file)));\n      }\n    }\n  },\n\n  getAExprsForDep(dep) {\n    if (!this._depsToAExprs.hasLeft(dep)) return [];\n    return Array.from(this._depsToAExprs.getRightsFor(dep));\n  },\n  getDepsForAExpr(aexpr) {\n    if (!this._depsToAExprs.hasRight(aexpr)) return [];\n    return Array.from(this._depsToAExprs.getLeftsFor(aexpr));\n  },\n\n  hasAExprsForDep(dep) {\n    return this.getAExprsForDep(dep).length >= 1;\n  },\n  hasDepsForAExpr(aexpr) {\n    return this.getDepsForAExpr(aexpr).length >= 1;\n  },\n\n  /*\n   * Removes all associations.\n   */\n  clear() {\n    this._depsToAExprs.clear();\n    this._depsToAExprs.getAllLeft().forEach(dep => dep.updateTracking());\n  }\n};\n\n\nexport async function getAEDataForFile(url) {\n  let result = new Map();\n  for (const ae of AExprRegistry.getLocationCache().getAEsInFile(url)) {\n    result.set(ae, getDependenciesAndHooksForAE(ae));\n  }\n  for (const hook of await getHooksInFile(url)) {\n    for(const dependency of hook.getDependencies()) {\n      for (const ae of DependenciesToAExprs.getAExprsForDep(dependency)) {\n        const location = ae.meta().get(\"location\");\n        if(!location) continue; // maybe if the ae has no location, we actually want to add it here?\n        const file = location.file;\n        // if the AE is also in this file, we already covered it with the previous loop\n        if (!file.includes(url)) {\n          result.getOrCreate(ae, () => []).push({ hook, dependency: dependency.getKey()})\n        }\n      }\n    }\n  }\n  return result;\n}\n\nfunction getDependenciesAndHooksForAE(ae) {\n  const result = [];\n  for (const dependency of DependenciesToAExprs.getDepsForAExpr(ae)) {\n    for (const hook of dependency.getHooks()) {\n      result.push({ hook, dependency: dependency.getKey()});\n    }\n  }\n  return result;\n}\n\nexport async function getHooksInFile(url) {\n  const allHooks = ContextAndIdentifierToDependencies.allValues().flatMap(dep => dep.getHooks());\n  const hooksWithLocations = await Promise.all(allHooks.map(hook => {\n    return hook.getLocations().then(locations => {\n      return { hook, locations };\n    });\n  }));\n  return hooksWithLocations.filter(({ hook, locations }) => {\n    return locations.some(loc => loc && loc.file && loc.file.includes(url));\n  }).map(({ hook, locations }) => hook);\n}\n\n\nexport class DependencyKey {\n  constructor(context, identifier) {\n    this.context = context;\n    this.identifier = identifier;\n  }\n  \n  getDependency() {    \n    return ContextAndIdentifierToDependencies.get(this.context, this.identifier);\n  }\n  \n  equals(other) {\n    if(other.context === this.context) {\n      // Handle weird edgecase to deal with array[0] being the same as array[\"0\"]\n      if(Array.isArray(this.context)) {\n        if(typeof this.identifier !== typeof other.identifier) {\n          if(typeof this.identifier === \"string\") {\n            return this.identifier === (other.identifier + \"\");\n          }\n          if(typeof other.identifier === \"string\") {\n            return other.identifier === (this.identifier + \"\");\n          }\n        }\n      }\n      return other.identifier === this.identifier;\n    }\n    return false;\n  }\n  \n  getCurrentVersion() {\n    if(!this.currentVersion) {\n      return this;\n    } else {\n      this.currentVersion = this.currentVersion.getCurrentVersion();\n    }\n    return this.currentVersion;\n  }\n  \n  getValue() {\n    if(this.context instanceof Map) {\n      return this.context.get(this.identifier);      \n    } else if (this.context instanceof Set) {\n      return [...this.context][this.identifer];\n    } else {\n      return this.context[this.identifier];\n    }\n  }\n}\n\n// 1. Two step map with (obj|scope) as primary key and (prop|name) as secondary key mapping to the dependencies\nconst ContextAndIdentifierToDependencies = new DualKeyMap();\n\n//const ContextToIdentifier = new MultiMap();\n//const IdentifierToDependency = new InjectiveMap();\n// 1. (obj, prop) or (scope, name) -> ContextAndIdentifierCompositeKey\n// - given via ContextAndIdentifierCompositeKey\n\n// 2.1. ContextAndIdentifierCompositeKey 1<->1 Dependency\n// - CompositeKeyToDependencies\n//const CompositeKeyToDependencies = new InjectiveMap();\n// 2.2. Dependency *<->* AExpr\n// - DependenciesToAExprs\n\n/** Source Code Hooks */\n// 3.1. ContextAndIdentifierCompositeKey 1<->1 SourceCodeHook\n// - CompositeKeyToSourceCodeHook\n//const CompositeKeyToSourceCodeHook = new InjectiveMap();\n// 3.2. SourceCodeHook *<->* Dependency\n// - HooksToDependencies\n\n/** Data Structure Hooks */\n// 4.1 DataStructureHookByDataStructure\nconst DataStructureHookByDataStructure = new WeakMap(); // WeakMap<(Set/Array/Map), DataStructureHook>\n/** Wrapping Hooks */\n// 4.2 PropertyWrappingHookByProperty\nconst PropertyWrappingHookByProperty = new Map(); // Map<(String/Symbol), PropertyWrappingHook>\n/** Mutation Observer Hooks */\n// 4.3 DataStructureHookByDataStructure\nconst MutationObserverHookByHTMLElement = new WeakMap(); // WeakMap<HTMLElement, MutationObserverHook>\n/** XXX */\n// 4.4 XXX\nconst EventBasedHookByHTMLElement = new WeakMap(); // WeakMap<HTMLElement, EventBasedHook>\n\nclass Hook {\n  constructor() {\n    this.dependencies = new Set();\n    this.installed = false;\n    this.locations = [];\n    this.locationPromises = new Set();\n  }\n\n  addLocation(location) {\n    if (!location) return;\n    const addToMember = (l) => {\n      if (l && !this.locations.some(loc => _.isEqual(loc, l))) {\n        this.locations.push(l);\n      }\n    };\n    if(location.then) {\n      this.locationPromises.add(location);\n      location.then((resolved) => {\n        this.locationPromises.delete(location);\n        addToMember(resolved);\n      });\n    } else {\n      addToMember(location);\n    }\n  }\n  \n  getDependencies() {\n    return this.dependencies;\n  }\n\n  addDependency(dependency) {\n    this.dependencies.add(dependency);\n  }\n\n  removeDependency(dependency) {\n    this.dependencies.delete(dependency);\n  }\n\n  async getLocations() {\n    await Promise.all(this.locationPromises);\n    return this.locations;\n  }\n\n  informationString() {\n    return \"Generic Hook\";\n  }\n\n  notifyDependencies(location) {\n    const debugging = Preferences.get(\"EnableAEDebugging\");\n    let loc;\n    if(debugging) {\n      loc = location || TracingHandler.findRegistrationLocation();\n      this.addLocation(loc);\n\n      this.getLocations().then(locations => DebuggingCache.updateFiles(locations.map(loc => loc.file)));      \n    }\n    for(const dep of [...this.dependencies]) {\n      if(debugging) {        \n        for (const ae of DependenciesToAExprs.getAExprsForDep(dep)) {\n          if (ae.meta().has(\"location\")) {\n            DebuggingCache.updateFiles([ae.meta().get(\"location\").file]);\n          }\n        }\n      }\n      dep.notifyAExprs(loc, this);\n    }\n  }\n}\n\nclass SourceCodeHook extends Hook {\n\n  informationString() {\n    return \"SourceCodeHook: \" + this.context + \".\" + this.identifier;\n  }\n\n  constructor(context, identifier) {\n    super();\n\n    this.context = context;\n    this.identifier = identifier;\n  }\n\n  install() {}\n  uninstall() {}\n}\n\nclass DataStructureHook extends Hook {\n  static getOrCreateForDataStructure(dataStructure) {\n    return DataStructureHookByDataStructure.getOrCreate(dataStructure, () => new DataStructureHook(dataStructure));\n  }\n  constructor(dataStructure) {\n    super();\n    this.monitorProperties(dataStructure);\n\n    // set.add = function add(...args) {\n    //   const result = Set.prototype.add.call(this, ...args);\n    //   hook.notifyDependencies();\n    //   return result;\n    // }\n  }\n\n  getPrototypeDescriptors(obj) {\n    const proto = obj.constructor.prototype;\n\n    const descriptors = Object.getOwnPropertyDescriptors(proto);\n    return Object.entries(descriptors).map(([key, desc]) => (desc.key = key, desc));\n  }\n\n  wrapProperty(obj, descriptor, after) {\n    Object.defineProperty(obj, descriptor.key, Object.assign({}, descriptor, {\n      value(...args) {\n        try {\n          return descriptor.value.apply(this, args);\n        } finally {\n          after.call(this, ...args);\n        }\n      }\n    }));\n  }\n\n  monitorProperties(obj) {\n    const myself = this;\n    const prototypeDescriptors = this.getPrototypeDescriptors(obj);\n    Object.entries(Object.getOwnPropertyDescriptors(obj)); // unused -> need for array\n\n    // the property constructor needs to be a constructor if called (as in cloneDeep in lodash);\n    // We can also leave out functions that do not change the state\n    const ignoredDescriptorKeys = new Set([\"at\", \"get\", \"constructor\", \"concat\", \"entries\", \"every\", \"filter\", \"find\", \"findIndex\", \"forEach\", \"includes\", \"indexOf\", \"join\", \"keys\", \"lastIndexOf\", \"reduce\", \"reduceRight\", \"slice\", \"toString\", \"toLocaleString\", \"values\"]);\n    \n    prototypeDescriptors\n      .filter(descriptor => !ignoredDescriptorKeys.has(descriptor.key))\n      .forEach(addDescriptor => {\n      // var addDescriptor = prototypeDescriptors.find(d => d.key === 'add')\n      if (addDescriptor.value) {\n        if (isFunction(addDescriptor.value)) {\n          this.wrapProperty(obj, addDescriptor, function () {\n            // #HACK #TODO we need an `withoutLayer` equivalent here\n            if (window.__compareAExprResults__) {\n              return;\n            }\n\n            this; // references the modified container\n            myself.notifyDependencies();\n          });\n        } else {\n          // console.warn(`Property ${addDescriptor.key} has a value that is not a function, but ${addDescriptor.value}.`)\n        }\n      } else {\n          // console.warn(`Property ${addDescriptor.key} has no value.`)\n        }\n    });\n  }\n\n  informationString() {\n    return \"DataStructureHook\";\n  }\n}\n\nclass PropertyWrappingHook extends Hook {\n  static getOrCreateForProperty(property) {\n    return PropertyWrappingHookByProperty.getOrCreate(property, () => new PropertyWrappingHook(property));\n  }\n\n  constructor(property) {\n    super();\n    this.property = property;\n    this.value = self[property];\n    const { configurable, enumerable } = Object.getOwnPropertyDescriptor(self, property);\n\n    // #TODO: keep old property accessors if present (otherwise, we do not interact with COP and ourselves, i.e. other property wrappers)\n    Object.defineProperty(self, property, {\n      configurable,\n      enumerable,\n\n      get: () => this.value,\n      set: value => {\n        const result = this.value = value;\n        this.notifyDependencies();\n        return result;\n      }\n    });\n  }\n\n  informationString() {\n    return \"PropertyWrappingHook: \" + this.property;\n  }\n}\n\nclass MutationObserverHook extends Hook {\n  static getOrCreateForElement(element) {\n    return MutationObserverHookByHTMLElement.getOrCreate(element, () => new MutationObserverHook(element));\n  }\n  constructor(element) {\n    super();\n\n    this._element = element;\n\n    const o = new MutationObserver((mutations, observer) => {\n      // const mutationRecords = o.takeRecords();\n      // lively.notify(`mutation on ${this._element.tagName}; ${mutations\n      //               .filter(m => m.type === \"attributes\")\n      //               .map(m => m.attributeName).join(', ')}.`)\n      this.changeHappened();\n      // mutations.forEach(mutation => {\n      //   if(mutation.type == \"attributes\") {\n      //     lively.notify(\n      //       `${mutation.oldValue} -> ${mutation.target.getAttribute(mutation.attributeName)}`,\n      //       `attribute: ${mutation.attributeName}`\n      //     );\n      //   }\n      //   if(mutation.type == \"characterData\") {\n      //     lively.notify(\n      //       `${mutation.oldValue}}`,\n      //       `characterData`\n      //     );\n      //   }\n      //   if(mutation.type == \"childList\") {\n      //     lively.success(\n      //       `${mutation.addedNodes.length} added, ${mutation.removedNodes.length} removed`,\n      //       `childList`\n      //     );\n      //   }\n      // });\n    });\n\n    o.observe(this._element, {\n      attributes: true,\n      attributeFilter: undefined,\n      attributeOldValue: true,\n\n      characterData: true,\n      characterDataOldValue: true,\n\n      childList: true,\n\n      subtree: true\n    });\n\n    // o.disconnect();\n  }\n\n  changeHappened() {\n    this.notifyDependencies();\n  }\n\n  informationString() {\n    return \"MutationObserverHook: \" + this._element;\n  }\n}\n\nclass EventBasedHook extends Hook {\n  static getOrCreateForElement(element) {\n    return EventBasedHookByHTMLElement.getOrCreate(element, () => new EventBasedHook(element));\n  }\n  \n  constructor(element) {\n    super();\n\n    this._element = element;\n\n    // #TODO: when the type of an input element changes, 'value' or 'checked' become unavailable\n    if (this._element.tagName === 'INPUT' || this._element.tagName === 'TEXTAREA') {\n      this._element.addEventListener('input', () => {\n        this.changeHappened();\n      });\n    } else if (this._element.tagName === 'LIVELY-CODE-MIRROR') {\n      this._element.editor.on('changes', () => {\n        this.changeHappened();\n      });\n    }\n  }\n\n  changeHappened() {\n    this.notifyDependencies();\n  }\n\n  informationString() {\n    return \"EventBasedHook: \" + this._element;\n  }\n}\n\nclass FrameBasedHook extends Hook {\n  static get instance() {\n    if (!this._instance) {\n      this._instance = new FrameBasedHook();\n      //Initialization is split to avoid endless recursion\n      this._instance.initializeAe();\n    }\n    return this._instance;\n  }\n\n  initializeAe() {\n    let x = 0;\n    // #TODO: caution, we currently use a side-effect function! How can we mitigate this? E.g. using `Date.now()` as expression\n    let ae = frameBasedAExpr.aexpr(() => x++);\n    ae.isMeta(true);\n    ae.onChange(() => {\n      this.changeHappened();\n    });\n  }\n\n  changeHappened() {\n    this.notifyDependencies();\n  }\n\n  informationString() {\n    return \"FrameBasedHook\";\n  }\n}\n\nexport class RewritingActiveExpression extends BaseActiveExpression {\n  constructor(func, ...args) {\n    super(func, ...args);\n    this.meta({ strategy: 'Rewriting' });\n    this.updateDependencies();\n  }\n\n  dispose() {\n    DependencyManager.disconnectAllFor(this);\n    super.dispose();\n  }\n\n  // #TODO: why is this defined here, and not in the superclass?\n  asAExpr() {\n    return this;\n  }\n\n  updateDependencies() {\n    if (this.isDisabled()) {\n      return;\n    }\n\n    ExpressionAnalysis.recalculateDependencies(this);\n  }\n  supportsDependencies() {\n    return true;\n  }\n\n  dependencies() {\n    return new DependencyAPI(this);\n  }\n  \n  getDataBindingDependencyKey() {\n    if(!this.isDataBinding()) return undefined;\n    \n    if(!this.dataBindingDependencyKey) {\n      const {context, identifier} = this.meta().get('conceptInfo');\n      this.dataBindingDependencyKey = new DependencyKey(context, identifier);\n    }\n    return this.dataBindingDependencyKey;\n  }\n\n  sharedDependenciesWith(otherAExpr) {\n    const ownDependencies = this.dependencies().all();\n    const otherDependencies = otherAExpr.dependencies().all();\n    const [own, shared, other] = ownDependencies.computeDiff(otherDependencies);\n    return shared;\n  }\n}\n\nclass DependencyAPI {\n  constructor(aexpr) {\n    this._aexpr = aexpr;\n  }\n\n  getDependencies() {\n    return DependenciesToAExprs.getDepsForAExpr(this._aexpr);\n  }\n\n  all() {\n    return Array.from(this.getDependencies());\n  }\n\n  locals() {\n    return this.getDependencies().filter(dependency => dependency.isLocalDependency()).map(dependency => dependency.getAsDependencyDescription());\n  }\n\n  members() {\n    return this.getDependencies().filter(dependency => dependency.isMemberDependency()).map(dependency => dependency.getAsDependencyDescription());\n  }\n\n  globals() {\n    return this.getDependencies().filter(dependency => dependency.isGlobalDependency()).map(dependency => dependency.getAsDependencyDescription());\n  }\n}\n\nexport function aexpr(func, ...args) {\n  return new RewritingActiveExpression(func, ...args);\n}\n\nconst globalRef = typeof window !== \"undefined\" ? window : // browser tab\ntypeof self !== \"undefined\" ? self : // web worker\nglobal; // node.js\n\nconst notificationQueue = [];\nclass DependencyManager {\n  // #TODO, #REFACTOR: extract into own method; remove from this class\n  static disconnectAllFor(aexpr) {\n    DependenciesToAExprs.disconnectAllForAExpr(aexpr);\n  }\n\n  // #TODO, #REFACTOR: extract into configurable dispatcher class\n  static checkAndNotifyAExprs(aexprs, location, dependency, hook) {\n    const cbStack = AExprRegistry.callbackStack;\n    const cbTop = cbStack[cbStack.length - 1];\n    const info = Promise.resolve(location).then((resolvedLoc) => {return {location: resolvedLoc, dependency: dependency.getKey(), hook, parentAE: cbTop && cbTop.ae, parentCallback: cbTop && cbTop.callback }});\n    aexprs.slice().reverse().forEach(ae => {\n      if(new Set(AExprRegistry.evaluationStack).has(ae)) return;\n      const infos = [info];\n      const index = notificationQueue.findIndex((stackItem) => stackItem.ae === ae);\n      if (index > -1) {\n        infos.push(...notificationQueue[index].infos);\n        notificationQueue.splice(index, 1);\n      }\n      //#ToDo: Insert in order of AE creation, to guarantee a topologically sorted graph for Signals. Signals before everything else?\n      notificationQueue.push({ae, infos});\n      notificationQueue.sort((a, b) => {      \n        if (a.ae.isDataBinding() !== b.ae.isDataBinding()) {\n          return b.ae.isDataBinding() ? 1 : -1;\n        } else {\n          return a.ae.id > b.ae.id ? 1 : -1;\n        }\n      });\n    });\n    \n    while(notificationQueue.length > 0) {\n      const {ae, infos} = notificationQueue[0];\n      //if(!aexprs.includes(ae)) return;\n      notificationQueue.splice(0, 1);\n      if(new Set(AExprRegistry.evaluationStack).has(ae)) continue;\n      ae.updateDependencies();\n      ae.checkAndNotify(infos);\n    }\n  }\n\n  /**\n   * **************************************************************\n   * ********************** associate *****************************\n   * **************************************************************\n   */\n  static associateMember(obj, prop) {\n    const dependency = Dependency.getOrCreateFor(obj, prop, 'member');\n    ExpressionAnalysis.associateDependency(dependency);\n  }\n\n  static associateGlobal(globalName) {\n    const dependency = Dependency.getOrCreateFor(globalRef, globalName, 'member');\n    ExpressionAnalysis.associateDependency(dependency);\n  }\n\n  static associateLocal(scope, varName) {\n    const dependency = Dependency.getOrCreateFor(scope, varName, 'local');\n    ExpressionAnalysis.associateDependency(dependency);\n  }\n\n}\n\nclass TracingHandler {\n\n  /**\n   * **************************************************************\n   * ********************** update ********************************\n   * **************************************************************\n   */\n  static memberUpdated(obj, prop, location) {\n    const dependency = ContextAndIdentifierToDependencies.get(obj, prop);\n    if (!dependency || !dependency.sourceCodeHook) return;\n    dependency.sourceCodeHook.notifyDependencies(location);\n  }\n\n  static globalUpdated(globalName, location) {\n    const dependency = ContextAndIdentifierToDependencies.get(globalRef, globalName);\n    if (!dependency || !dependency.sourceCodeHook) return;\n    dependency.sourceCodeHook.notifyDependencies(location);\n  }\n\n  static localUpdated(scope, varName, location) {\n    const dependency = ContextAndIdentifierToDependencies.get(scope, varName);\n    if (!dependency || !dependency.sourceCodeHook) return;\n    dependency.sourceCodeHook.notifyDependencies(location);\n  }\n\n  static async findRegistrationLocation() {\n    if (lively === undefined) return undefined;\n    const stack = lively.stack();\n    const frames = stack.frames;\n\n    for (let frame of frames.slice()) {\n      if (!frame.file.includes(\"active-expression\") && !frame.file.includes(\"ContextJS\") && !frame.file.includes(\"<anonymous>\")) {\n        return await frame.getSourceLocBabelStyle();\n      }\n    }\n\n    const notificationFrame = frames.findIndex(frame => frame.func.includes(\".notifyDependencies\"));\n    if(notificationFrame >= 0 && notificationFrame < frames.length - 1) {      \n      return await frames[notificationFrame + 1].getSourceLocBabelStyle();\n    }\n    // lively.warn(\"findRegistrationLocation problem\", stack);\n    return frames[0];\n  }\n\n}\n\n/*\n * Disconnects all associations between active expressions and object properties\n * As a result no currently enable active expression will be notified again,\n * effectively removing them from the system.\n *\n * #TODO: Caution, this might break with some semantics, if we still have references to an aexpr!\n */\nexport function reset() {\n  ContextAndIdentifierToDependencies.clear();\n  DependenciesToAExprs.clear();\n}\n\n/*MD # Source Code Point Cuts MD*/\n/**\n * (C)RUD for member attributes\n */\nexport function traceMember(obj, prop) {\n  if (expressionAnalysisMode) {\n    DependencyManager.associateMember(obj, prop);\n  }\n}\n\nexport function getMember(obj, prop) {\n  if (expressionAnalysisMode) {\n    DependencyManager.associateMember(obj, prop);\n  }\n  const result = obj[prop];\n  return result;\n}\n\nexport function getAndCallMember(obj, prop, args = []) {\n  if (expressionAnalysisMode) {\n    DependencyManager.associateMember(obj, prop);\n  }\n  const result = obj[prop](...args);\n  return result;\n}\n\nexport function updateMember(obj, prop, location) {\n  TracingHandler.memberUpdated(obj, prop, location);  \n}\n\nexport function setMember(obj, prop, val, location) {\n  const result = obj[prop] = val;\n  TracingHandler.memberUpdated(obj, prop, location);\n  return result;\n}\n\nexport function setMemberAddition(obj, prop, val, location) {\n  const result = obj[prop] += val;\n  TracingHandler.memberUpdated(obj, prop, location);\n  return result;\n}\n\nexport function setMemberSubtraction(obj, prop, val, location) {\n  const result = obj[prop] -= val;\n  TracingHandler.memberUpdated(obj, prop, location);\n  return result;\n}\n\nexport function setMemberMultiplication(obj, prop, val, location) {\n  const result = obj[prop] *= val;\n  TracingHandler.memberUpdated(obj, prop, location);\n  return result;\n}\n\nexport function setMemberDivision(obj, prop, val, location) {\n  const result = obj[prop] /= val;\n  TracingHandler.memberUpdated(obj, prop, location);\n  return result;\n}\n\nexport function setMemberRemainder(obj, prop, val, location) {\n  const result = obj[prop] %= val;\n  TracingHandler.memberUpdated(obj, prop, location);\n  return result;\n}\n\nexport function setMemberExponentiation(obj, prop, val, location) {\n  const result = obj[prop] **= val;\n  TracingHandler.memberUpdated(obj, prop, location);\n  return result;\n}\n\nexport function setMemberLeftShift(obj, prop, val, location) {\n  const result = obj[prop] <<= val;\n  TracingHandler.memberUpdated(obj, prop, location);\n  return result;\n}\n\nexport function setMemberRightShift(obj, prop, val, location) {\n  const result = obj[prop] >>= val;\n  TracingHandler.memberUpdated(obj, prop, location);\n  return result;\n}\n\nexport function setMemberUnsignedRightShift(obj, prop, val, location) {\n  const result = obj[prop] >>>= val;\n  TracingHandler.memberUpdated(obj, prop, location);\n  return result;\n}\n\nexport function setMemberBitwiseAND(obj, prop, val, location) {\n  const result = obj[prop] &= val;\n  TracingHandler.memberUpdated(obj, prop, location);\n  return result;\n}\n\nexport function setMemberBitwiseXOR(obj, prop, val, location) {\n  const result = obj[prop] ^= val;\n  TracingHandler.memberUpdated(obj, prop, location);\n  return result;\n}\n\nexport function setMemberBitwiseOR(obj, prop, val, location) {\n  const result = obj[prop] |= val;\n  TracingHandler.memberUpdated(obj, prop, location);\n  return result;\n}\n\nexport function deleteMember(obj, prop, location) {\n  const result = delete obj[prop];\n  TracingHandler.memberUpdated(obj, prop, location);\n  return result;\n}\n\nexport function getLocal(scope, varName, value) {\n  if (expressionAnalysisMode) {\n    scope[varName] = value;\n    DependencyManager.associateLocal(scope, varName);\n  }\n}\n\nexport function setLocal(scope, varName, value, location) {\n  scope[varName] = value;\n  TracingHandler.localUpdated(scope, varName, location);\n}\n\nexport function getGlobal(globalName) {\n  if (expressionAnalysisMode) {\n    DependencyManager.associateGlobal(globalName);\n  }\n}\n\nexport function setGlobal(globalName, location) {\n  TracingHandler.globalUpdated(globalName, location);\n}\n\nexport default aexpr;"],"mappings":"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"}