{"version":3,"names":["PartialLayer","Layer","LayerableObjectTrait","LayerableObject","COPError","PartialLayerComposition","updateMember","Config","log_layer_code","object_id_counter","LayerObjectID","LayerStack","globalContextForNamedLayers","implicitLayers","log","string","console","withLogLayerCode","func","old","_export","getLayerDefinitionForObject","layer","object","result","prototype","e","error","ensurePartialLayer","Error","hasOwnProperty","Object","defineProperty","value","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","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","implicitlyActivated","collectWithLayersIn","layers","unshift","collectWithoutLayersIn","structuralLayers","owner","aysncLayers","AsyncLayerStack","j","globalLayers","dynamicLayers","activeImplicitLayers","getImplicitLayers","allLayersFor","functionName","AllLayers","allLayers","setters","_srcClientReactiveActiveExpressionEventsEventJs","EventTypes","Event","default","execute","HTMLElement","System","import","lively4url","then","mod","ignoreDeprecatedProceed","layeredObject","layeredProperties","propertyName","desc","reinstall","eachProperty","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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"}