{"version":3,"names":["PartialLayer","Layer","LayerableObjectTrait","LayerableObject","COPError","PartialLayerComposition","log","string","log_layer_code","console","withLogLayerCode","func","old","getLayerDefinitionForObject","layer","object","result","LayerObjectID","prototype","e","error","ensurePartialLayer","Error","hasOwnProperty","Object","defineProperty","value","object_id_counter","enumerable","configurable","writable","layerMethod","property","setLayeredPropertyValue","displayName","String","name","constructor","type","makeFunctionLayerAware","isHidden","layerGetterMethod","getter","defineGetter","layerSetterMethod","setter","defineSetter","layerProperty","defs","defProperty","getOwnPropertyDescriptor","get","set","makePropertyLayerAware","layerPropertyWithShadow","layeredPropSymbol","self","Symbol","layeredGetter","undefined","proceed","layeredSetter","v","computeLayersFor","obj","activeLayers","composeLayers","stack","GlobalLayers","slice","i","length","current","withLayers","filter","l","includes","concat","withoutLayers","resetLayerStack","LayerStack","isStatic","toString","composition","invalidateLayerComposition","currentLayers","forEach","ea","lookupLayeredFunctionForObject","function_name","methodType","n","partialFunction","partialLayerForObject","getterMethod","setterMethod","superclass","getPrototypeOf","pvtMakeFunctionOrPropertyLayerAware","slotName","baseValue","isLayerAware","makeSlotLayerAwareWithNormalLookup","tmpObj","wrapped_function","proceedStack","push","invokeLayeredMethodThenPopProceedStack","apply","arguments","isContextJSWrapper","getOriginal","originalFunction","newFunction","pop","base_obj","base_function","baseObj","baseObjProperty","propName","makeFunctionLayerUnaware","prevFunction","currentFunction","Function","uninstallLayersInObject","getOwnPropertyNames","enableLayer","indexOf","wasAlreadyActive","_emitActivateCallbacks","disableLayer","idx","_emitDeactivateCallbacks","splice","args","warn","partialMethodIndex","partialMethods","index","partialMethod","invokeNextPartialMethod","getActiveImplicitLayers","implicitLayers","implicitlyActivated","collectWithLayersIn","layers","unshift","collectWithoutLayersIn","structuralLayers","owner","aysncLayers","AsyncLayerStack","j","globalLayers","dynamicLayers","activeImplicitLayers","getImplicitLayers","allLayersFor","functionName","AllLayers","allLayers","EventTypes","Event","HTMLElement","updateMember","System","import","lively4url","then","mod","Config","ignoreDeprecatedProceed","layeredObject","layeredProperties","propertyName","desc","reinstall","eachProperty","globalContextForNamedLayers","context","_name","_context","_activateCallbacks","_deactivateCallbacks","events","logEvent","LAYERCREATED","fullName","layeredObjects","map","partialLayers","prop","layeredClasses","remove","isGlobal","beNotGlobal","delete","AExprForILA","dispose","uninstall","eachLayeredObj","refineClass","classObject","methods","debugInfo","refineObject","code","location","lively","addRefineEvent","unrefineObject","id","unrefineClass","classObj","reinstallInClass","reinstallInObject","partialLayer","findLast","array","predicate","x","getILAChangeLocation","lastChangeEvent","event","CHANGED","ensureResolved","triggers","beGlobal","PL","fn","hide","isLayer","onActivate","callback","_fallbackToReactiveTrackingOfILA","onDeactivate","cb","functions","REFINE","addUnrefineEvent","UNREFINE","eventType","markTimestamp","reason","CUSTOM","activeWhile","condition","aexprConstructor","add","_shouldUseReactiveTracking","_setupReactiveILA","onBecomeTrue","onBecomeFalse","setAE","clearActiveWhile","mightBeActive","Set","defaultActiveLayersFunc","setWithLayers","addWithLayer","getWithLayers","removeWithLayer","addWithoutLayer","getWithoutLayers","include","setWithoutLayers","removeWithoutLayer","getWithoutLayer","message","_msg","baseFunction","_partialMethods","_layers","_object"],"sources":["Layers.js"],"sourcesContent":["/*\n * Copyright (c) 2008-2016 Hasso Plattner Institute\n *\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/* \n * Private Helpers for Development\n */\nimport { EventTypes } from 'src/client/reactive/active-expression/events/event.js';\nimport Event from 'src/client/reactive/active-expression/events/event.js';\n// import { updateMember } from 'src/client/reactive/active-expression-rewriting/active-expression-rewriting.js';\n\n\n// #HACK ActiveExpression rewriting needs lively4 and lang.js \nvar updateMember; \nif (self.HTMLElement) {\n  updateMember =  function() {\n    console.warn(\"Layers.js: aexpr updateMember not loaed yet!\")\n    throw new Error(\"raise condition? active-expression-rewriting.js not loaded yet\")\n  }\n  System.import(lively4url + '/src/client/reactive/active-expression-rewriting/active-expression-rewriting.js').then(mod => {\n    updateMember = mod.updateMember // replace updateMember\n  })\n} else {\n  // fallback for worker or nodejs \n  updateMember =  function() {\n    // there is nothing to do here? \n  }  \n}\n\nexport const Config = {};\nConfig.ignoreDeprecatedProceed = true;\n\nexport let log_layer_code = false;\nexport function log(string) {\n  if (log_layer_code) console.log(string);\n}\n\n/* \n * Private State\n */\n\n// #HACK #TODO\nself.proceedStack = [];\nself.AllLayers = [];\nself.GlobalLayers = [];\nself.AsyncLayerStack = [];\n\n// export const proceedStack = [];\n// export const GlobalLayers = [];\n\n// hack, to work around absence of identity dictionaries in JavaScript\n// we could perhaps limit ourselfs to layer only those objects that respond to object.id()\n// because working with objects is a serialization problem in itself, perhaps we should\n// restrict ourself in working with classes\n// So classes have names and names can be used as keys in dictionaries :-)\nlet object_id_counter = 0;\n\n/* \n * Private Methods\n */\n\n// for debugging ContextJS itself\nexport function withLogLayerCode(func) {\n  try {\n    var old = log_layer_code;\n    log_layer_code = true;\n    func();\n  } finally {\n    log_layer_code = old;\n  }\n}\n\nconst LayerObjectID = self.Symbol(\"layerObjectID\");\n\nexport function getLayerDefinitionForObject(layer, object) {\n  // log(\"cop getLayerDefinitionForObject(\" + layer + \", \" + object + \")\");\n  if (!layer || !object) {\n    return;\n  }\n  var result = layer[object[LayerObjectID]];\n  // #BUG Maximum call stack size exceeded\n  try {\n    return result ? result : getLayerDefinitionForObject(layer, object.prototype);\n  } catch (e) {\n    debugger;\n    console.error('getLayerDefinitionForObject', e);\n    return;\n  }\n}\n\n/**\n * Stores partial definitions for a single layered object and layer.\n */\nclass PartialLayer {\n  constructor(layeredObject) {\n    this.layeredObject = layeredObject;\n    this.layeredProperties = {};\n  }\n\n  setLayeredPropertyValue(name, value) {\n    this.layeredProperties[name] = value;\n  }\n\n  defineGetter(propertyName, getter) {\n    return Object.defineProperty(this.layeredProperties, propertyName, { get: getter, configurable: true });\n  }\n\n  defineSetter(propertyName, setter) {\n    return Object.defineProperty(this.layeredProperties, propertyName, { set: setter, configurable: true });\n  }\n\n  getterMethod(propertyName) {\n    var desc = Object.getOwnPropertyDescriptor(this.layeredProperties, propertyName);\n    if (desc) return desc.get;\n  }\n\n  setterMethod(propertyName) {\n    var desc = Object.getOwnPropertyDescriptor(this.layeredProperties, propertyName);\n    if (desc) return desc.set;\n  }\n\n  property(propertyName) {\n    if (this.layeredProperties.hasOwnProperty(propertyName)) {\n      return this.layeredProperties[propertyName];\n    }\n  }\n\n  reinstall() {\n    Object.getOwnPropertyNames(this.layeredProperties).forEach(eachProperty => {\n      const property = Object.getOwnPropertyDescriptor(this.layeredProperties, eachProperty);\n      if (typeof property.get !== 'undefined' || typeof property.set !== 'undefined') {\n        makePropertyLayerAware(this.layeredObject, eachProperty);\n      } else {\n        makeFunctionLayerAware(this.layeredObject, eachProperty);\n      }\n    });\n  }\n}\n\nexport function ensurePartialLayer(layer, object) {\n  if (!layer) {\n    throw new Error(\"in ensurePartialLayer: layer is nil\");\n  }\n  if (!object.hasOwnProperty(LayerObjectID)) {\n    Object.defineProperty(object, LayerObjectID, {\n      value: object_id_counter++,\n      enumerable: false,\n      configurable: false,\n      writable: false\n    });\n  }\n  if (!layer[object[LayerObjectID]]) {\n    layer[object[LayerObjectID]] = new PartialLayer(object);\n  }\n  return layer[object[LayerObjectID]];\n}\n\n// TODO(mariannet) : Find out if ES6 constructor also has type\nexport function layerMethod(layer, object, property, func) {\n  ensurePartialLayer(layer, object).setLayeredPropertyValue(property, func);\n  func.displayName = \"layered \" + String(layer.name) + \" \" + (object.constructor ? object.constructor.type + \"$\" : \"\") + property;\n  makeFunctionLayerAware(object, property, layer.isHidden);\n\n  // Bookkeeping for layer uninstall\n  // typeof object.getName === 'function'\n  //    && (layer._layeredFunctionsList[object][property] = true);\n}\n\nfunction layerGetterMethod(layer, object, property, getter) {\n  ensurePartialLayer(layer, object).defineGetter(property, getter);\n}\n\nfunction layerSetterMethod(layer, object, property, setter) {\n  ensurePartialLayer(layer, object).defineSetter(property, setter);\n}\n\nexport function layerProperty(layer, object, property, defs) {\n  var defProperty = Object.getOwnPropertyDescriptor(defs, property);\n  var getter = defProperty && defProperty.get;\n  if (getter) {\n    layerGetterMethod(layer, object, property, getter);\n  }\n  var setter = defProperty && defProperty.set;\n  if (setter) {\n    layerSetterMethod(layer, object, property, setter);\n  }\n  if (getter || setter) {\n    makePropertyLayerAware(object, property);\n  } else {\n    layerMethod(layer, object, property, defs[property]);\n  }\n}\n\nexport function layerPropertyWithShadow(layer, object, property) {\n  // shadowing does not work with current implementation\n  // see the shadow tests in LayersTest\n  // TODO: the tests are green, what is the above comment about?\n  var defs = {};\n  // var baseValue = object[property];\n  const layeredPropSymbol = self.Symbol(property + ' ' + (typeof layer.name === 'string' ? 'for Layer ' + layer.name : 'for anonymous Layer'));\n  Object.defineProperty(defs, property, {\n    get: function layeredGetter() {\n      return this[layeredPropSymbol] === undefined ? proceed() : this[layeredPropSymbol];\n    },\n    set: function layeredSetter(v) {\n      this[layeredPropSymbol] = v;\n    },\n    configurable: true\n  });\n  layerProperty(layer, object, property, defs);\n}\n\nexport function computeLayersFor(obj) {\n  return obj && obj.activeLayers ? obj.activeLayers(activeLayers) : activeLayers();\n}\n\nexport function composeLayers(stack) {\n  var result = self.GlobalLayers.slice(0); // copy the array, #TODO: use `Array.from`\n  // duplicate of dynamicLayers, #TODO: use LayerableObjectTrait.dynamicLayers\n  for (var i = 0; i < stack.length; i++) {\n    var current = stack[i];\n    if (current.withLayers) {\n      result = result.filter(l => !current.withLayers.includes(l)).concat(current.withLayers);\n    } else if (current.withoutLayers) {\n      result = result.filter(l => !current.withoutLayers.includes(l));\n    }\n  }\n  return result;\n}\n\nexport let LayerStack;\n\nexport function resetLayerStack() {\n  LayerStack = [{\n    isStatic: true,\n    toString: function () {\n      return \"BaseLayer\";\n    },\n    composition: null\n  }];\n  invalidateLayerComposition();\n}\n\nexport function currentLayers() {\n  return activeLayers\n  // if (LayerStack.length == 0) {\n  //   throw new Error(\"The default layer is missing\");\n  // }\n  // // NON OPTIMIZED VERSION FOR STATE BASED LAYER ACTIVATION \n  // // #TODO check if this still hold for #async\n  // var current = LayerStack[LayerStack.length - 1];\n  // if (!current.composition) {\n  //   current.composition = composeLayers(LayerStack) ;\n  // }\n  // return current.composition.concat(getActiveImplicitLayers());\n  ();\n}\n\n// clear cached layer compositions\nexport function invalidateLayerComposition() {\n  LayerStack.forEach(function (ea) {\n    ea.composition = null;\n  });\n}\n\nexport function lookupLayeredFunctionForObject(self, layer, function_name, methodType, n) {\n  if (!layer) {\n    return undefined;\n  }\n  let partialFunction;\n  const partialLayerForObject = getLayerDefinitionForObject(layer, self);\n  if (partialLayerForObject) {\n    // log(\"  found layer definitions for object\");\n    if (methodType == 'getter') {\n      partialFunction = partialLayerForObject.getterMethod(function_name);\n    } else if (methodType == 'setter') {\n      partialFunction = partialLayerForObject.setterMethod(function_name);\n    } else {\n      partialFunction = partialLayerForObject.property(function_name);\n    }\n  }\n  if (!partialFunction && !self.hasOwnProperty(function_name)) {\n    // this method was probably added by a layer\n    // so try to look it up in the superclass hierachy\n    const superclass = Object.getPrototypeOf(self);\n    if (superclass) {\n      return lookupLayeredFunctionForObject(superclass, layer, function_name, methodType);\n    }\n  }\n  return partialFunction;\n}\n\nfunction pvtMakeFunctionOrPropertyLayerAware(obj, slotName, baseValue, type, isHidden) {\n  // install in obj[slotName] a cop wrapper that weaves partial methods\n  // into real method (baseValue)\n  if (baseValue.isLayerAware) {\n    return;\n  }\n  makeSlotLayerAwareWithNormalLookup(obj, slotName, baseValue, type, isHidden);\n}\n\nfunction makeSlotLayerAwareWithNormalLookup(obj, slotName, baseValue, type, isHidden) {\n  var tmpObj = {};\n  if (baseValue && baseValue.isLayerAware) {\n    debugger;\n  }\n  let wrapped_function = function () {\n    'use strict';\n\n    var composition = new PartialLayerComposition(this, slotName, baseValue, type);\n    self.proceedStack.push(composition);\n    return invokeLayeredMethodThenPopProceedStack.apply(this, arguments);\n  };\n  wrapped_function.displayName = \"wrapped_\" + slotName;\n  wrapped_function.isLayerAware = true;\n  // this is more declarative outside of COP context\n  wrapped_function.isContextJSWrapper = true;\n  if (isHidden) {\n    wrapped_function.toString = function () {\n      return this.getOriginal().toString();\n    };\n  }\n  // For wrapped_function.getOriginal()\n  wrapped_function.originalFunction = baseValue;\n  if (type == \"getter\") {\n    Object.defineProperty(obj, slotName, { get: wrapped_function });\n  } else if (type == \"setter\") {\n    Object.defineProperty(obj, slotName, { set: wrapped_function });\n  } else {\n    Object.defineProperty(obj, slotName, {\n      get() {\n        return wrapped_function;\n      },\n      set(newFunction) {\n        if (newFunction.isLayerAware) {\n          // when someone reasigns an already layered method.... Example Bug. Dexie modifies Promise.then\n          // #Paper #ContextJS \n        } else {\n          makeSlotLayerAwareWithNormalLookup(this, slotName, newFunction);\n        }\n      }\n    });\n  }\n}\n\nfunction invokeLayeredMethodThenPopProceedStack() {\n  'use strict';\n\n  try {\n    return proceed.apply(void 0 /* undefined */, arguments);\n  } finally {\n    self.proceedStack.pop();\n  }\n}\n\nfunction makeFunctionLayerAware(base_obj, function_name, isHidden) {\n  if (!base_obj) {\n    throw new Error(\"can't layer an non existent object\");\n  }\n  /* ensure base function */\n  var base_function = base_obj[function_name];\n  if (!base_function) {\n    // console.log(\"WARNING can't layer an non existent function\" + function_name +\n    // \" , so do nothing\")\n    // return;\n    base_function = () => null;\n  }\n  pvtMakeFunctionOrPropertyLayerAware(base_obj, function_name, base_function, undefined, isHidden);\n}\n\nfunction makePropertyLayerAware(baseObj, property) {\n  if (!baseObj) {\n    throw new Error(\"can't layer a non existent object\");\n  }\n  // ensure base getter and setter\n  var baseObjProperty = Object.getOwnPropertyDescriptor(baseObj, property);\n  var propName = \"__layered_\" + property + \"__\";\n  var getter = baseObjProperty && baseObjProperty.get;\n  if (!getter) {\n    // does not work when dealing with classes and instances...\n    baseObj[propName] = baseObj[property]; // take over old value\n    getter = function () {\n      return this[propName];\n    };\n    Object.defineProperty(baseObj, property, { get: getter, configurable: true });\n  }\n  var setter = baseObjProperty && baseObjProperty.set;\n  if (!setter) {\n    setter = function (value) {\n      return this[propName] = value;\n    };\n    Object.defineProperty(baseObj, property, { set: setter, configurable: true });\n  }\n  pvtMakeFunctionOrPropertyLayerAware(baseObj, property, getter, 'getter');\n  pvtMakeFunctionOrPropertyLayerAware(baseObj, property, setter, 'setter');\n}\n\nfunction makeFunctionLayerUnaware(base_obj, function_name) {\n  if (!base_obj) {\n    throw new Error(\"need object to makeFunctionLayerUnaware\");\n  }\n  var prevFunction;\n  var currentFunction = base_obj[function_name];\n  if (currentFunction === undefined) {\n    return; // nothing to do here\n  }\n  while (typeof currentFunction.originalFunction == 'function' && !currentFunction.isLayerAware) {\n    prevFunction = currentFunction;\n    currentFunction = currentFunction.originalFunction;\n  }\n  if (!currentFunction.isLayerAware) {\n    return; // nothing to do here\n  }\n  var originalFunction = currentFunction.originalFunction;\n  if (!(originalFunction instanceof Function)) {\n    throw new Error(\"makeFunctionLayerUnaware Error: no orignal function\");\n  }\n  if (prevFunction instanceof Function) {\n    prevFunction.originalFunction = originalFunction;\n  } else {\n    // need to use defineProperty because the setter keeps the function wrapped\n    Object.defineProperty(base_obj, function_name, {\n      value: originalFunction,\n      configurable: true\n    });\n  }\n}\n\nexport function uninstallLayersInObject(object) {\n  Object.getOwnPropertyNames(object).forEach(ea => {\n    if (typeof object[ea] === 'function') makeFunctionLayerUnaware(object, ea);\n  });\n}\n\n/* \n * PUBLIC COP Layer Definition\n */\n\nvar globalContextForNamedLayers = {};\n\nexport { globalContextForNamedLayers as GlobalNamedLayers };\n\n// Gloabl Layer Activation\nexport function enableLayer(layer) {\n  if (self.GlobalLayers.indexOf(layer) !== -1) {\n    return;\n  }\n  const wasAlreadyActive = currentLayers().includes(layer);\n  self.GlobalLayers.push(layer);\n  invalidateLayerComposition();\n  if (!wasAlreadyActive) {\n    layer._emitActivateCallbacks();\n  }\n}\n\nexport function disableLayer(layer) {\n  var idx = self.GlobalLayers.indexOf(layer);\n  if (idx < 0) {\n    return;\n  }\n  layer._emitDeactivateCallbacks();\n  self.GlobalLayers.splice(idx, 1);\n  invalidateLayerComposition();\n}\n\nexport function proceed(...args) {\n  // COP Proceed Function\n  var composition = self.proceedStack[self.proceedStack.length - 1];\n  if (!composition) {\n    console.warn('ContextJS: no composition to proceed (stack is empty) ');\n    return;\n  }\n  if (composition.partialMethodIndex == undefined) {\n    composition.partialMethodIndex = composition.partialMethods.length - 1;\n  }\n  var index = composition.partialMethodIndex;\n  var partialMethod = composition.partialMethods[index];\n  if (!partialMethod) {\n    if (!partialMethod) {\n      throw new COPError('no partialMethod to proceed');\n    }\n  } else {\n    composition.partialMethodIndex = index - 1;\n    try {\n      if (self.proceedStack.length > 1000) {\n        debugger; // #Debug\n      }\n\n      return invokeNextPartialMethod(partialMethod, index, composition, args);\n    } catch (e) {\n      console.error(\"proceed \" + self.proceedStack.length, e);\n      debugger; // #TODO debug endless recursion!\n      return;\n    }\n  }\n}\n\nfunction invokeNextPartialMethod(partialMethod, index, composition, args) {\n  try {\n    return partialMethod.apply(composition.object, args);\n  } finally {\n    composition.partialMethodIndex = index;\n  }\n}\n\n/* \n * Layer Class\n */\nexport class Layer {\n  constructor(name, context) {\n    this._name = name;\n    if (typeof name === 'undefined') {\n      this._name = self.Symbol('COP Layer');\n    }\n    this._context = context;\n    // this._layeredFunctionsList = {};\n\n    this._activateCallbacks = [];\n    this._deactivateCallbacks = [];\n    this.events = [];\n    this.logEvent(EventTypes.LAYERCREATED, { layer: this });\n    self.AllLayers.push(this);\n  }\n\n  // Accessing\n  get name() {\n    return this._name;\n  }\n  fullName() {\n    return '' + this._context + '.' + this._name;\n  }\n  layeredObjects() {\n    return Object.getOwnPropertyNames(this).map(ea => this[ea] && this[ea].layeredObject).filter(ea => ea); // filters falsy things\n  }\n  partialLayers() {\n    return Object.getOwnPropertyNames(this).map(propName => this[propName]).filter(prop => prop && prop.layeredObject);\n  }\n  // TODO: doesn't differentiate between functions and classes - necessary?\n  layeredClasses() {\n    return this.layeredObjects().map(ea => ea.constructor);\n  }\n\n  // Removing\n  remove() {\n\n    self.AllLayers.splice(self.AllLayers.indexOf(this), 1);\n    // Deletes the LayerClass, but keeps the layered Functions.\n    if (this.isGlobal()) {\n      this.beNotGlobal();\n    }\n    implicitLayers.delete(this);\n    if (this.AExprForILA) {\n      this.AExprForILA.dispose();\n    }\n\n    var context = this._context;\n    if (typeof context !== 'undefined') delete context[this.name];\n  }\n  uninstall() {\n    // Uninstalls just this Layer.\n    // functions that are layered by other Layers will not be reset.\n    var layer = this;\n    this.layeredObjects().forEach(function (eachLayeredObj) {\n      // var layerIdx = typeof eachLayeredObj.activeLayers === 'function'\n      //     ? eachLayeredObj.activeLayers().indexOf(layer) : -1;\n\n      // #Special Lively Webwerkstatt code.... General Case? #Jens\n      // #TODO if we have of gloabal list of all layers... we can look there\n\n      // Properties.own(layer._layeredFunctionsList[eachLayeredObj]).each(\n      //   function(eachLayeredFunc) {\n      //     var newerLayer = eachLayeredObj.activeLayers().find(\n      //       function(eachOtherLayer) {\n      //         var eachOtherLayerIdx\n      //             = eachLayeredObj.activeLayers().indexOf(eachOtherLayer);\n      //         var isNewer = (eachOtherLayerIdx !== -1)\n      //             && (eachOtherLayerIdx < layerIdx);\n      //         return isNewer &&\n      //             eachOtherLayer._layeredFunctionsList[eachLayeredObj][eachLayeredFunc];\n      //       });\n      //       if (!newerLayer) {\n      //         makeFunctionLayerUnaware(eachLayeredObj, eachLayeredFunc);\n      //       }\n      //   });\n    });\n    this.remove();\n  }\n\n  // Layer installation\n  refineClass(classObject, methods, debugInfo) {\n    if (!classObject || !classObject.prototype) {\n      throw new Error(\"ContextJS: can not refine class '\" + classObject + \"' in \" + this);\n    }\n    this.refineObject(classObject.prototype, methods, debugInfo);\n    return this;\n  }\n\n  // Layering objects may be a garbage collection problem, because the layers keep strong\n  // reference to the objects\n  refineObject(object, methods, debugInfo) {\n    // log(\"cop refineObject\");\n\n    // Bookkeeping:\n    // typeof object.getName === 'function' && (layer._layeredFunctionsList[object] = {});\n    Object.getOwnPropertyNames(methods).forEach(function_name => {\n      if (debugInfo) {\n        // console.log(\"ContextJS DEBUG INFO \", debugInfo)\n        if (methods[function_name] instanceof Function) {\n          methods[function_name].code = debugInfo[function_name].code;\n          methods[function_name].location = debugInfo[function_name].location;\n        } else {\n          lively.warn(\"Unable to add debug info to non-function property\");\n        }\n      }\n      // log(\" layer property: \" + function_name)\n      layerProperty(this, object, function_name, methods);\n    });\n    this.addRefineEvent(object, methods, debugInfo);\n    return this;\n  }\n  unrefineObject(obj) {\n    var id = obj[LayerObjectID];\n    if (id !== undefined) {\n      delete this[id];\n    }\n  }\n  unrefineClass(classObj) {\n    this.unrefineObject(classObj.prototype);\n  }\n\n  reinstallInClass(constructor) {\n    this.reinstallInObject(constructor.prototype);\n  }\n\n  reinstallInObject(object) {\n    const partialLayer = ensurePartialLayer(this, object);\n    partialLayer.reinstall();\n  }\n  \n  findLast(array, predicate) {\n    for (let i = array.length - 1; i >= 0; --i) {\n      const x = array[i];\n      if (predicate(x)) {\n        return x;\n      }\n    }\n  }  \n  \n  async getILAChangeLocation() {\n    if(this.AExprForILA) {\n      const lastChangeEvent = this.findLast(this.AExprForILA.events, event => event.type === EventTypes.CHANGED);\n      if (!lastChangeEvent) {\n        return undefined\n      }\n      await lastChangeEvent.ensureResolved();\n      if(lastChangeEvent.value && lastChangeEvent.value.triggers && lastChangeEvent.value.triggers.length > 0) {\n        return lastChangeEvent.value.triggers[0].location;\n      }\n    }\n    return undefined;\n  }\n\n  // Layer activation\n  beGlobal() {\n    enableLayer(this);\n    this.getILAChangeLocation().then(location => {\n      if (!location) return;\n      for(const PL of this.partialLayers()) {\n        Object.getOwnPropertyNames(PL.layeredProperties).forEach(fn => {\n            updateMember(PL.layeredObject, fn, location);\n        })\n      }         \n    });\n    return this;\n  }\n  beNotGlobal() {\n    disableLayer(this);\n    this.getILAChangeLocation().then(location => {\n      if (!location) return;\n      for(const PL of this.partialLayers()) {\n        Object.getOwnPropertyNames(PL.layeredProperties).forEach(fn => {\n            updateMember(PL.layeredObject, fn, location);\n        })\n      }    \n    });\n    return this;\n  }\n  hide() {\n    // Hidden Layers do not appear when evaluating the sourcecode of a function\n    // TODO: this function has to be called BEFORE the layer refines any class,\n    // due to problems in unrefining classes.\n    this.isHidden = true;\n    return this;\n  }\n\n  // Testing\n  isLayer() {\n    return true;\n  }\n  isGlobal() {\n    return self.GlobalLayers.indexOf(this) !== -1;\n  }\n\n  // Debugging\n  toString() {\n    return String(this.name); // could be a symbol\n  }\n\n  // Life-cycle callbacks\n  onActivate(callback) {\n    this._activateCallbacks.push(callback);\n    this._fallbackToReactiveTrackingOfILA();\n    return this;\n  }\n  onDeactivate(callback) {\n    this._deactivateCallbacks.push(callback);\n    this._fallbackToReactiveTrackingOfILA();\n    return this;\n  }\n  _emitActivateCallbacks() {\n    this._activateCallbacks.forEach(cb => cb());\n  }\n  _emitDeactivateCallbacks() {\n    this._deactivateCallbacks.forEach(cb => cb());\n  }\n\n  addRefineEvent(obj, functions, debugInfo) {\n    this.logEvent(EventTypes.REFINE, { obj, functions, debugInfo })\n  }\n\n  addUnrefineEvent(obj) {\n    this.logEvent(EventTypes.UNREFINE, {obj})\n  }\n\n  logEvent(eventType, obj) {\n    if (this.AExprForILA) {\n      this.AExprForILA.logEvent(eventType, obj);\n    } else {\n      this.events.push(new Event(undefined, obj, eventType));\n    }\n  }\n\n  markTimestamp(reason) {\n    this.logEvent(EventTypes.CUSTOM, reason);\n  }\n\n  // Implicit Layer Activation\n  activeWhile(condition, aexprConstructor) {\n    this.implicitlyActivated = condition;\n    this.aexprConstructor = aexprConstructor;\n\n    implicitLayers.add(this);\n    this._fallbackToReactiveTrackingOfILA();\n\n    return this;\n  }\n  _fallbackToReactiveTrackingOfILA() {\n    if (this._shouldUseReactiveTracking()) {\n      this._setupReactiveILA();\n    }\n  }\n  _shouldUseReactiveTracking() {\n    return this.implicitlyActivated && this.aexprConstructor && this._activateCallbacks.length + this._deactivateCallbacks.length > 0;\n  }\n  _setupReactiveILA() {\n    implicitLayers.delete(this);\n\n    if (!this.AExprForILA) {\n      this.AExprForILA = this.aexprConstructor(this.implicitlyActivated, this).onBecomeTrue(() => this.beGlobal()).onBecomeFalse(() => this.beNotGlobal());\n      this.events.forEach(event => {\n        event.setAE(this.AExprForILA);\n      });\n    }\n  }\n  \n  clearActiveWhile() {\n    const mightBeActive = !!this.AExprForILA;\n    if (mightBeActive) {\n      this.AExprForILA.dispose()\n    }\n    delete this.aexprConstructor\n\n    implicitLayers.delete(this);\n    delete this.implicitlyActivated\n    \n    if (mightBeActive) {\n      this.beNotGlobal()\n    }\n  }\n\n}\n\nconst implicitLayers = new Set();\nfunction getActiveImplicitLayers() {\n  return [...implicitLayers].filter(layer => layer.implicitlyActivated());\n}\n\nexport function collectWithLayersIn(layers, result) {\n  for (var i = layers.length - 1; i >= 0; i--) {\n    var ea = layers[i];\n    if (result.withLayers.indexOf(ea) === -1 && result.withoutLayers.indexOf(ea) === -1) {\n      result.withLayers.unshift(ea);\n    }\n  }\n}\n\nexport function collectWithoutLayersIn(layers, result) {\n  for (var i = 0; i < layers.length; i++) {\n    var ea = layers[i];\n    if (result.withoutLayers.indexOf(ea) === -1) {\n      result.withoutLayers.push(ea);\n    }\n  }\n}\n\nexport function structuralLayers(result, obj) {\n  // var allLayers = result.withLayers;\n  // var allWithoutLayers = result.withoutLayers;\n  // go ownerchain backward and gather all layer activations and deactivations\n  while (obj) {\n    // don't use accessor methods because of speed... (not measured yet)\n    if (obj.withLayers) {\n      collectWithLayersIn(obj.withLayers, result);\n    }\n    if (obj.withoutLayers) {\n      collectWithoutLayersIn(obj.withoutLayers, result);\n    }\n    // recurse, stop if owner is undefined\n    obj = obj.owner; // || obj.parentElement || obj.parentNode\n  }\n  return result;\n}\n\nexport function aysncLayers(result) {\n  // optimized version, that does not use closures and recursion\n  var stack = self.AsyncLayerStack;\n  // top down, ignore bottom element\n  for (var j = stack.length - 1; j > 0; j--) {\n    var current = stack[j];\n    if (current.withLayers) {\n      collectWithLayersIn(current.withLayers, result);\n    }\n    if (current.withoutLayers) {\n      collectWithoutLayersIn(current.withoutLayers, result);\n    }\n  }\n  return result;\n}\n\nexport function globalLayers(result) {\n  collectWithLayersIn(self.GlobalLayers, result);\n  return result;\n}\n\nexport function dynamicLayers(result) {\n  // optimized version, that does not use closures and recursion\n  var stack = LayerStack;\n  // top down, ignore bottom element\n  for (var j = stack.length - 1; j > 0; j--) {\n    var current = stack[j];\n    if (current.withLayers) {\n      collectWithLayersIn(current.withLayers, result);\n    }\n    if (current.withoutLayers) {\n      collectWithoutLayersIn(current.withoutLayers, result);\n    }\n  }\n  return result;\n}\n\n// #TODO #STEFAN rename -> implicitLayers\nexport function activeImplicitLayers(result) {\n  collectWithLayersIn(getActiveImplicitLayers(), result);\n  return result;\n}\n\nexport function getImplicitLayers(result) {\n  [...implicitLayers].forEach(layer => {\n    if (layer.implicitlyActivated()) {\n      collectWithLayersIn([layer], result);\n    } else {\n      collectWithoutLayersIn([layer], result);\n    }\n  });\n  return result;\n}\n\nexport function allLayersFor(obj, functionName, methodType) {\n  const result = [];\n  const layers = self.AllLayers;\n  for (var i = 0; i < layers.length; i++) {\n    var layer = layers[i];\n    var partialMethod = lookupLayeredFunctionForObject(obj, layer, functionName, methodType);\n    if (partialMethod) {\n      result.push({ partialMethod, layer });\n    }\n  }\n  return result;\n}\n\nexport function allLayers() {\n  var result = { withLayers: [], withoutLayers: [] };\n  dynamicLayers(result);\n\n  getImplicitLayers(result);\n\n  globalLayers(result);\n\n  return result;\n}\n\nexport function activeLayers() {\n  var result = { withLayers: [], withoutLayers: [] };\n  // go top to bottom in stack... \n  // so the last (dynamically) (de-)activated layers are first...\n  // remember withLayers and withoutLayers in result\n  // this is a bit to \"clever\" to iterate only once...\n  dynamicLayers(result);\n\n  // #Idea we can implement structural layer for HTMLElements without having to modify prototype...\n  // structuralLayers(result, obj);\n  activeImplicitLayers(result);\n\n  globalLayers(result);\n  // and the global layers are last\n  return result.withLayers;\n}\n\n/*\n * Example implementation of a layerable object\n */\nexport class LayerableObjectTrait {\n  activeLayers(defaultActiveLayersFunc) {\n    var result = { withLayers: [], withoutLayers: [] };\n    // go top to bottom in stack... \n    // so the last (dynamically) (de-)activated layers are first...\n    // remember withLayers and withoutLayers in result\n    // this is a bit to \"clever\" to iterate only once...\n    dynamicLayers(result);\n    structuralLayers(result, this);\n    globalLayers(result);\n    // and the global layers are last\n    return result.withLayers;\n  }\n\n  setWithLayers(layers) {\n    this.withLayers = layers;\n  }\n  addWithLayer(layer) {\n    var layers = this.getWithLayers();\n    if (!layers.includes(layer)) {\n      this.setWithLayers(layers.concat([layer]));\n    }\n  }\n  removeWithLayer(layer) {\n    var layers = this.getWithLayers();\n    if (layers.includes(layer)) {\n      this.setWithLayers(layers.filter(l => l !== layer));\n    }\n  }\n  addWithoutLayer(layer) {\n    var layers = this.getWithoutLayers();\n    if (!layers.include(layer)) {\n      this.setWithoutLayers(layers.concat([layer]));\n    }\n  }\n  removeWithoutLayer(layer) {\n    var layers = this.getWithoutLayers();\n    this.setWithoutLayers(layers.filter(l => l !== layer));\n  }\n  setWithoutLayers(layers) {\n    this.withoutLayers = layers;\n  }\n  getWithLayers() {\n    return this.withLayers || [];\n  }\n  getWithoutLayer() {\n    return this.withoutLayers || [];\n  }\n}\n\nexport class LayerableObject extends LayerableObjectTrait {}\n\nexport class COPError {\n  constructor(message) {\n    this._msg = message;\n  }\n  toString() {\n    return \"COP ERROR: \" + this._msg;\n  }\n}\n\nexport class PartialLayerComposition {\n  constructor(obj, functionName, baseFunction, methodType) {\n    this._partialMethods = [baseFunction];\n    this._layers = [undefined];\n    const layers = computeLayersFor(obj);\n    for (var i = 0; i < layers.length; i++) {\n      var layer = layers[i];\n      var partialMethod = lookupLayeredFunctionForObject(obj, layer, functionName, methodType);\n      if (partialMethod) {\n        this._partialMethods.push(partialMethod);\n        this._layers.push(layer);\n      }\n    }\n    this._object = obj;\n  }\n\n  get object() {\n    return this._object;\n  }\n\n  get partialMethods() {\n    return this._partialMethods;\n  }\n\n  get layers() {\n    return this._layers;\n  }\n}\n\nresetLayerStack();\n\n// vim: sw=2"],"mappings":"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"}