{"version":3,"names":["System","register","_export","_context","cop","currentLayers","withLayers","layers","func","previouslyActiveLayers","LayerStack","push","filter","l","includes","forEach","_emitActivateCallbacks","beforePop","pop","afterPop","_emitDeactivateCallbacks","withoutLayers","beforePush","layer","args","layerName","context","length","basicCreate","GlobalNamedLayers","existing","isLayer","Error","Layer","setters","_LayersJs","proceed","execute"],"sources":["contextjs.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'use strict'; \n\nimport * as cop from \"./Layers.js\";\nimport { currentLayers } from \"./Layers.js\";\nexport { proceed, Layer } from \"./Layers.js\";\n\n// Layer Activation\nexport function withLayers(layers, func) {\n  const previouslyActiveLayers = currentLayers();\n  cop.LayerStack.push({withLayers: layers});\n  layers\n    .filter(l => !previouslyActiveLayers.includes(l))\n    .forEach(l => l._emitActivateCallbacks());\n  // console.log(\"callee: \" + withLayers.callee);\n  try {\n    return func();\n  } finally {\n    const beforePop = currentLayers();\n    cop.LayerStack.pop();\n    const afterPop = currentLayers();\n    layers\n      .filter(l => beforePop.includes(l) && !afterPop.includes(l))\n      .forEach(l => l._emitDeactivateCallbacks());\n  }\n}\n\nexport function withoutLayers(layers, func) {\n  const beforePush = currentLayers();\n  cop.LayerStack.push({withoutLayers: layers});\n  layers\n    .filter(l => beforePush.includes(l))\n    .forEach(l => l._emitDeactivateCallbacks());\n  try {\n    return func();\n  } finally {\n    const beforePop = currentLayers();\n    cop.LayerStack.pop();\n    const afterPop = currentLayers();\n    layers\n      .filter(l => !beforePop.includes(l) && afterPop.includes(l))\n      .forEach(l => l._emitActivateCallbacks());\n  }\n}\n\n// Layer creation by name\nexport function layer(...args) {\n  let layerName, context;\n  if (args.length === 2) {\n    [context, layerName] = args;\n  } else if (args.length === 1) {\n    [layerName] = args;\n  }\n  return basicCreate(layerName, context);\n};\n\n// Private helpers\nfunction basicCreate(layerName, context) {\n  if (typeof context === 'undefined')\n    context = cop.GlobalNamedLayers;\n  if (typeof context[layerName] !== 'undefined') {\n    let existing = context[layerName];\n    if (!existing.isLayer /* undefined or falsy */ || !existing.isLayer()) {\n      throw new Error('Will not overwrite existing property ' + layerName);\n    }\n    return existing;\n  } else {\n    return context[layerName] = new cop.Layer(layerName, context);\n  }\n};\n"],"mappings":"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"}